optolith-database-schema 0.34.10 → 0.34.12

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,20 @@
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.34.12](https://github.com/elyukai/optolith-database-schema/compare/v0.34.11...v0.34.12) (2026-03-10)
6
+
7
+
8
+ ### Features
9
+
10
+ * optional language and script for books ([3239e09](https://github.com/elyukai/optolith-database-schema/commit/3239e095392ff91811956ad8f9f022e057fa9763))
11
+
12
+ ## [0.34.11](https://github.com/elyukai/optolith-database-schema/compare/v0.34.10...v0.34.11) (2026-03-10)
13
+
14
+
15
+ ### Features
16
+
17
+ * working supernatural creature entity ([f8a174e](https://github.com/elyukai/optolith-database-schema/commit/f8a174efad6dc46e83efd9d6e33155de435e6569))
18
+
5
19
  ## [0.34.10](https://github.com/elyukai/optolith-database-schema/compare/v0.34.9...v0.34.10) (2026-03-10)
6
20
 
7
21
 
package/gen/types.d.ts CHANGED
@@ -174,6 +174,7 @@ export type EntityMap = {
174
174
  Weapon: Weapon
175
175
  WeaponAccessory: WeaponAccessory
176
176
  WeaponEnchantment: WeaponEnchantment
177
+ WorkingSupernaturalCreature: WorkingSupernaturalCreature
177
178
  ZibiljaRitual: ZibiljaRitual
178
179
  }
179
180
 
@@ -20009,14 +20010,14 @@ export interface BookTranslation {
20009
20010
  secondary_name?: string
20010
20011
 
20011
20012
  /**
20012
- * The language the book is written in.
20013
+ * The language the book is written in, if specified.
20013
20014
  */
20014
- language: string
20015
+ language?: string
20015
20016
 
20016
20017
  /**
20017
- * The script that was used for the book.
20018
+ * The script that was used for the book, if specified.
20018
20019
  */
20019
- script: string
20020
+ script?: string
20020
20021
 
20021
20022
  /**
20022
20023
  * Note text.
@@ -21431,6 +21432,10 @@ export type EquipmentIdentifier =
21431
21432
  kind: "WeaponAccessory"
21432
21433
  WeaponAccessory: WeaponAccessory_ID
21433
21434
  }
21435
+ | {
21436
+ kind: "WorkingSupernaturalCreature"
21437
+ WorkingSupernaturalCreature: WorkingSupernaturalCreature_ID
21438
+ }
21434
21439
 
21435
21440
  export interface GemOrPreciousStone {
21436
21441
  /**
@@ -23249,6 +23254,54 @@ export interface WeaponAccessoryTranslation {
23249
23254
  errata?: Errata
23250
23255
  }
23251
23256
 
23257
+ export interface WorkingSupernaturalCreature {
23258
+ /**
23259
+ * The cost in silverthalers.
23260
+ */
23261
+ cost: Cost
23262
+
23263
+ /**
23264
+ * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
23265
+ */
23266
+ src: PublicationRefs
23267
+
23268
+ /**
23269
+ * All translations for the entry, identified by IETF language tag (BCP47).
23270
+ */
23271
+ translations: {
23272
+ [localeId: string]: WorkingSupernaturalCreatureTranslation
23273
+ }
23274
+ }
23275
+
23276
+ /**
23277
+ * The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
23278
+ */
23279
+ export type WorkingSupernaturalCreature_ID = string
23280
+
23281
+ export interface WorkingSupernaturalCreatureTranslation {
23282
+ /**
23283
+ * The working creature’s name.
23284
+ */
23285
+ name: string
23286
+
23287
+ /**
23288
+ * The working creature’s appearance.
23289
+ */
23290
+ appearance: string
23291
+
23292
+ /**
23293
+ * The working creature’s components.
23294
+ */
23295
+ components: string
23296
+
23297
+ /**
23298
+ * The working creature’s use.
23299
+ */
23300
+ use: string
23301
+
23302
+ errata?: Errata
23303
+ }
23304
+
23252
23305
  export interface FamiliarsTrick {
23253
23306
  /**
23254
23307
  * The animal types this trick is available to. Either it is available to all or only a list of specific animal types.
package/lib/main.js CHANGED
@@ -158,6 +158,7 @@ export const schema = new Schema([
158
158
  Types.Weapon,
159
159
  Types.WeaponAccessory,
160
160
  Types.WeaponEnchantment,
161
+ Types.WorkingSupernaturalCreature,
161
162
  Types.ZibiljaRitual,
162
163
  ], Types.Locale);
163
164
  // /**
@@ -163,4 +163,5 @@ export declare const WandEnchantmentIdentifier: () => R;
163
163
  export declare const WeaponAccessoryIdentifier: () => R;
164
164
  export declare const WeaponEnchantmentIdentifier: () => R;
165
165
  export declare const WeaponIdentifier: () => R;
166
+ export declare const WorkingSupernaturalCreatureIdentifier: () => R;
166
167
  export declare const ZibiljaRitualIdentifier: () => R;
@@ -52,6 +52,7 @@ import { TravelGearOrTool } from "./equipment/item/TravelGearOrTool.js";
52
52
  import { Vehicle } from "./equipment/item/Vehicle.js";
53
53
  import { Weapon } from "./equipment/item/Weapon.js";
54
54
  import { WeaponAccessory } from "./equipment/item/WeaponAccessory.js";
55
+ import { WorkingSupernaturalCreature } from "./equipment/item/WorkingSupernaturalCreature.js";
55
56
  import { ExperienceLevel } from "./ExperienceLevel.js";
56
57
  import { EyeColor } from "./EyeColor.js";
57
58
  import { HairColor } from "./HairColor.js";
@@ -314,4 +315,5 @@ export const WandEnchantmentIdentifier = () => R(WandEnchantment);
314
315
  export const WeaponAccessoryIdentifier = () => R(WeaponAccessory);
315
316
  export const WeaponEnchantmentIdentifier = () => R(WeaponEnchantment);
316
317
  export const WeaponIdentifier = () => R(Weapon);
318
+ export const WorkingSupernaturalCreatureIdentifier = () => R(WorkingSupernaturalCreature);
317
319
  export const ZibiljaRitualIdentifier = () => R(ZibiljaRitual);
@@ -345,6 +345,7 @@ export declare const EquipmentIdentifier: DB.Enum<"EquipmentIdentifier", {
345
345
  Vehicle: DB.EnumCase<DB.ReferenceIdentifier>;
346
346
  Weapon: DB.EnumCase<DB.ReferenceIdentifier>;
347
347
  WeaponAccessory: DB.EnumCase<DB.ReferenceIdentifier>;
348
+ WorkingSupernaturalCreature: DB.EnumCase<DB.ReferenceIdentifier>;
348
349
  }, []>;
349
350
  export declare const AdvancedSkillStyleSpecialAbilityIdentifier: DB.Enum<"AdvancedSkillStyleSpecialAbilityIdentifier", {
350
351
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1,5 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, BookIdentifier, BowlEnchantmentIdentifier, BrawlingSpecialAbilityIdentifier, CantripIdentifier, CauldronEnchantmentIdentifier, CeremonialItemIdentifier, CeremonialItemSpecialAbilityIdentifier, CeremonyIdentifier, ChronicleEnchantmentIdentifier, CloseCombatTechniqueIdentifier, ClothesIdentifier, ClothingPackageIdentifier, CombatSpecialAbilityIdentifier, CombatStyleSpecialAbilityIdentifier, CommandSpecialAbilityIdentifier, ContainerIdentifier, CultureIdentifier, CurseIdentifier, DaggerRitualIdentifier, DisadvantageIdentifier, DiseaseIdentifier, DominationRitualIdentifier, ElementIdentifier, ElixirIdentifier, ElvenMagicalSongIdentifier, EquipmentOfBlessedOnesIdentifier, FamiliarSpecialAbilityIdentifier, FatePointSexSpecialAbilityIdentifier, FatePointSpecialAbilityIdentifier, FocusRuleIdentifier, FoolsHatEnchantmentIdentifier, GemOrPreciousStoneIdentifier, GeneralIdentifier, GeneralSpecialAbilityIdentifier, GeodeRitualIdentifier, HaubenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, KrallenkettenzauberIdentifier, KristallkugelzauberIdentifier, LaboratoryIdentifier, LanguageIdentifier, LiebesspielzeugIdentifier, LiturgicalChantIdentifier, LiturgicalStyleSpecialAbilityIdentifier, LuxuryGoodIdentifier, LycantropicGiftIdentifier, MagicalArtifactIdentifier, MagicalDanceIdentifier, MagicalMelodyIdentifier, MagicalRuneIdentifier, MagicalSignIdentifier, MagicalSpecialAbilityIdentifier, MagicalTraditionIdentifier, MagicStyleSpecialAbilityIdentifier, MusicalInstrumentIdentifier, NewspaperIdentifier, OptionalRuleIdentifier, OrbEnchantmentIdentifier, OrienteeringAidIdentifier, PactGiftIdentifier, PatronIdentifier, PoisonIdentifier, PropertyIdentifier, ProtectiveWardingCircleSpecialAbilityIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RingEnchantmentIdentifier, RitualIdentifier, RopeOrChainIdentifier, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, SkillIdentifier, SkillStyleSpecialAbilityIdentifier, SpellIdentifier, SpellSwordEnchantmentIdentifier, StaffEnchantmentIdentifier, StationeryIdentifier, TargetCategoryIdentifier, ThievesToolIdentifier, ToolOfTheTradeIdentifier, ToyEnchantmentIdentifier, TradeSecretIdentifier, TravelGearOrToolIdentifier, TrinkhornzauberIdentifier, VampiricGiftIdentifier, VehicleIdentifier, VisionIdentifier, WandEnchantmentIdentifier, WeaponAccessoryIdentifier, WeaponEnchantmentIdentifier, WeaponIdentifier, ZibiljaRitualIdentifier, } from "./_Identifier.js";
2
+ import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, BookIdentifier, BowlEnchantmentIdentifier, BrawlingSpecialAbilityIdentifier, CantripIdentifier, CauldronEnchantmentIdentifier, CeremonialItemIdentifier, CeremonialItemSpecialAbilityIdentifier, CeremonyIdentifier, ChronicleEnchantmentIdentifier, CloseCombatTechniqueIdentifier, ClothesIdentifier, ClothingPackageIdentifier, CombatSpecialAbilityIdentifier, CombatStyleSpecialAbilityIdentifier, CommandSpecialAbilityIdentifier, ContainerIdentifier, CultureIdentifier, CurseIdentifier, DaggerRitualIdentifier, DisadvantageIdentifier, DiseaseIdentifier, DominationRitualIdentifier, ElementIdentifier, ElixirIdentifier, ElvenMagicalSongIdentifier, EquipmentOfBlessedOnesIdentifier, FamiliarSpecialAbilityIdentifier, FatePointSexSpecialAbilityIdentifier, FatePointSpecialAbilityIdentifier, FocusRuleIdentifier, FoolsHatEnchantmentIdentifier, GemOrPreciousStoneIdentifier, GeneralIdentifier, GeneralSpecialAbilityIdentifier, GeodeRitualIdentifier, HaubenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, KrallenkettenzauberIdentifier, KristallkugelzauberIdentifier, LaboratoryIdentifier, LanguageIdentifier, LiebesspielzeugIdentifier, LiturgicalChantIdentifier, LiturgicalStyleSpecialAbilityIdentifier, LuxuryGoodIdentifier, LycantropicGiftIdentifier, MagicalArtifactIdentifier, MagicalDanceIdentifier, MagicalMelodyIdentifier, MagicalRuneIdentifier, MagicalSignIdentifier, MagicalSpecialAbilityIdentifier, MagicalTraditionIdentifier, MagicStyleSpecialAbilityIdentifier, MusicalInstrumentIdentifier, NewspaperIdentifier, OptionalRuleIdentifier, OrbEnchantmentIdentifier, OrienteeringAidIdentifier, PactGiftIdentifier, PatronIdentifier, PoisonIdentifier, PropertyIdentifier, ProtectiveWardingCircleSpecialAbilityIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RingEnchantmentIdentifier, RitualIdentifier, RopeOrChainIdentifier, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, SkillIdentifier, SkillStyleSpecialAbilityIdentifier, SpellIdentifier, SpellSwordEnchantmentIdentifier, StaffEnchantmentIdentifier, StationeryIdentifier, TargetCategoryIdentifier, ThievesToolIdentifier, ToolOfTheTradeIdentifier, ToyEnchantmentIdentifier, TradeSecretIdentifier, TravelGearOrToolIdentifier, TrinkhornzauberIdentifier, VampiricGiftIdentifier, VehicleIdentifier, VisionIdentifier, WandEnchantmentIdentifier, WeaponAccessoryIdentifier, WeaponEnchantmentIdentifier, WeaponIdentifier, WorkingSupernaturalCreatureIdentifier, ZibiljaRitualIdentifier, } from "./_Identifier.js";
3
3
  export const ActivatableIdentifier = DB.Enum(import.meta.url, {
4
4
  name: "ActivatableIdentifier",
5
5
  values: () => ({
@@ -305,6 +305,7 @@ export const EquipmentIdentifier = DB.Enum(import.meta.url, {
305
305
  Vehicle: DB.EnumCase({ type: VehicleIdentifier() }),
306
306
  Weapon: DB.EnumCase({ type: WeaponIdentifier() }),
307
307
  WeaponAccessory: DB.EnumCase({ type: WeaponAccessoryIdentifier() }),
308
+ WorkingSupernaturalCreature: DB.EnumCase({ type: WorkingSupernaturalCreatureIdentifier() }),
308
309
  }),
309
310
  });
310
311
  export const AdvancedSkillStyleSpecialAbilityIdentifier = DB.Enum(import.meta.url, {
@@ -34,6 +34,7 @@ export declare const EquipmentPackage: DB.Entity<"EquipmentPackage", {
34
34
  Vehicle: DB.EnumCase<DB.ReferenceIdentifier>;
35
35
  Weapon: DB.EnumCase<DB.ReferenceIdentifier>;
36
36
  WeaponAccessory: DB.EnumCase<DB.ReferenceIdentifier>;
37
+ WorkingSupernaturalCreature: DB.EnumCase<DB.ReferenceIdentifier>;
37
38
  }, []>>, true>;
38
39
  number: DB.MemberDecl<DB.Integer, false>;
39
40
  }>, []>>>, false>;
@@ -132,8 +132,8 @@ export declare const Book: DB.Entity<"Book", {
132
132
  translations: DB.MemberDecl<DB.NestedEntityMap<"BookTranslation", {
133
133
  name: DB.MemberDecl<DB.String, true>;
134
134
  secondary_name: DB.MemberDecl<DB.String, false>;
135
- language: DB.MemberDecl<DB.String, true>;
136
- script: DB.MemberDecl<DB.String, true>;
135
+ language: DB.MemberDecl<DB.String, false>;
136
+ script: DB.MemberDecl<DB.String, false>;
137
137
  note: DB.MemberDecl<DB.String, false>;
138
138
  rules: DB.MemberDecl<DB.String, false>;
139
139
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
@@ -38,12 +38,12 @@ export const Book = DB.Entity(import.meta.url, {
38
38
  comment: "An auxiliary name or label of the item, if available.",
39
39
  type: DB.String({ minLength: 1 }),
40
40
  }),
41
- language: DB.Required({
42
- comment: "The language the book is written in.",
41
+ language: DB.Optional({
42
+ comment: "The language the book is written in, if specified.",
43
43
  type: DB.String({ minLength: 1, isMarkdown: true }),
44
44
  }),
45
- script: DB.Required({
46
- comment: "The script that was used for the book.",
45
+ script: DB.Optional({
46
+ comment: "The script that was used for the book, if specified.",
47
47
  type: DB.String({ minLength: 1, isMarkdown: true }),
48
48
  }),
49
49
  note: DB.Optional({
@@ -0,0 +1,72 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const WorkingSupernaturalCreature: DB.Entity<"WorkingSupernaturalCreature", {
3
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
+ Free: DB.EnumCase<null>;
5
+ Various: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<null>;
7
+ Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
+ value: DB.MemberDecl<DB.Float, true>;
9
+ translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
10
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
11
+ }>, false>;
12
+ }>, []>>>;
13
+ Range: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CostRange", DB.Object<{
14
+ from: DB.MemberDecl<DB.Float, true>;
15
+ to: DB.MemberDecl<DB.Float, true>;
16
+ translations: DB.MemberDecl<DB.NestedEntityMap<"CostRangeTranslation", {
17
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
18
+ }>, false>;
19
+ }>, []>>>;
20
+ }, []>>, true>;
21
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
22
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
23
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
24
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
25
+ printing: DB.MemberDecl<DB.Integer, false>;
26
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
27
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
28
+ InsideCoverFront: DB.EnumCase<null>;
29
+ InsideCoverBack: DB.EnumCase<null>;
30
+ Numbered: DB.EnumCase<DB.Integer>;
31
+ }, []>>, true>;
32
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
33
+ InsideCoverFront: DB.EnumCase<null>;
34
+ InsideCoverBack: DB.EnumCase<null>;
35
+ Numbered: DB.EnumCase<DB.Integer>;
36
+ }, []>>, false>;
37
+ }>, []>>>, true>;
38
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
39
+ }>, []>>, true>;
40
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
41
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
42
+ printing: DB.MemberDecl<DB.Integer, true>;
43
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
44
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
45
+ InsideCoverFront: DB.EnumCase<null>;
46
+ InsideCoverBack: DB.EnumCase<null>;
47
+ Numbered: DB.EnumCase<DB.Integer>;
48
+ }, []>>, true>;
49
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
50
+ InsideCoverFront: DB.EnumCase<null>;
51
+ InsideCoverBack: DB.EnumCase<null>;
52
+ Numbered: DB.EnumCase<DB.Integer>;
53
+ }, []>>, false>;
54
+ }>, []>>>, true>;
55
+ }>, []>>>;
56
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
57
+ printing: DB.MemberDecl<DB.Integer, true>;
58
+ }>, []>>>;
59
+ }, []>>>, false>;
60
+ }>, true>;
61
+ }>, []>>>, []>>, true>;
62
+ translations: DB.MemberDecl<DB.NestedEntityMap<"WorkingSupernaturalCreatureTranslation", {
63
+ name: DB.MemberDecl<DB.String, true>;
64
+ appearance: DB.MemberDecl<DB.String, true>;
65
+ components: DB.MemberDecl<DB.String, true>;
66
+ use: DB.MemberDecl<DB.String, true>;
67
+ errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
68
+ date: DB.MemberDecl<DB.Date, true>;
69
+ description: DB.MemberDecl<DB.String, true>;
70
+ }>, []>>>, []>>, false>;
71
+ }>, true>;
72
+ }, undefined>;
@@ -0,0 +1,44 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { NestedTranslationMap } from "../../Locale.js";
3
+ import { Errata } from "../../source/_Erratum.js";
4
+ import { src } from "../../source/_PublicationRef.js";
5
+ import { Cost } from "./_Item.js";
6
+ export const WorkingSupernaturalCreature = DB.Entity(import.meta.url, {
7
+ name: "WorkingSupernaturalCreature",
8
+ namePlural: "WorkingSupernaturalCreatures",
9
+ type: () => DB.Object({
10
+ cost: DB.Required({
11
+ comment: "The cost in silverthalers.",
12
+ type: DB.IncludeIdentifier(Cost),
13
+ }),
14
+ src,
15
+ translations: NestedTranslationMap(DB.Required, "WorkingSupernaturalCreature", DB.Object({
16
+ name: DB.Required({
17
+ comment: "The working creature’s name.",
18
+ type: DB.String({ minLength: 1 }),
19
+ }),
20
+ appearance: DB.Required({
21
+ comment: "The working creature’s appearance.",
22
+ type: DB.String({ minLength: 1 }),
23
+ }),
24
+ components: DB.Required({
25
+ comment: "The working creature’s components.",
26
+ type: DB.String({ minLength: 1 }),
27
+ }),
28
+ use: DB.Required({
29
+ comment: "The working creature’s use.",
30
+ type: DB.String({ minLength: 1 }),
31
+ }),
32
+ errata: DB.Optional({
33
+ type: DB.IncludeIdentifier(Errata),
34
+ }),
35
+ })),
36
+ }),
37
+ instanceDisplayName: {},
38
+ uniqueConstraints: [
39
+ {
40
+ entityMapKeyPath: "translations",
41
+ keyPathInEntityMap: "name",
42
+ },
43
+ ],
44
+ });
@@ -51,10 +51,12 @@ export { TravelGearOrTool } from "./equipment/item/TravelGearOrTool.js";
51
51
  export { Vehicle } from "./equipment/item/Vehicle.js";
52
52
  export { Weapon } from "./equipment/item/Weapon.js";
53
53
  export { WeaponAccessory } from "./equipment/item/WeaponAccessory.js";
54
+ export { WorkingSupernaturalCreature } from "./equipment/item/WorkingSupernaturalCreature.ts";
54
55
  export { ExperienceLevel } from "./ExperienceLevel.js";
55
56
  export { EyeColor } from "./EyeColor.js";
56
57
  export { FamiliarsTrick } from "./FamiliarsTrick.js";
57
58
  export { HairColor } from "./HairColor.js";
59
+ export { HomunculusType } from "./HomunculusType.js";
58
60
  export { Curriculum, Guideline, LessonPackage } from "./Lessons.js";
59
61
  export { LiturgicalChant } from "./LiturgicalChant.js";
60
62
  export { Locale } from "./Locale.js";
@@ -71,7 +73,6 @@ export { MagicalRune } from "./magicalActions/MagicalRune.js";
71
73
  export { ZibiljaRitual } from "./magicalActions/ZibiljaRitual.js";
72
74
  export { MetaCondition } from "./MetaCondition.js";
73
75
  export { PactCategory } from "./PactCategory.js";
74
- export { HomunculusType } from "./HomunculusType.js";
75
76
  export { Patron } from "./Patron.js";
76
77
  export { PatronCategory } from "./PatronCategory.js";
77
78
  export { PersonalityTrait } from "./PersonalityTrait.js";
@@ -51,10 +51,12 @@ export { TravelGearOrTool } from "./equipment/item/TravelGearOrTool.js";
51
51
  export { Vehicle } from "./equipment/item/Vehicle.js";
52
52
  export { Weapon } from "./equipment/item/Weapon.js";
53
53
  export { WeaponAccessory } from "./equipment/item/WeaponAccessory.js";
54
+ export { WorkingSupernaturalCreature } from "./equipment/item/WorkingSupernaturalCreature.js";
54
55
  export { ExperienceLevel } from "./ExperienceLevel.js";
55
56
  export { EyeColor } from "./EyeColor.js";
56
57
  export { FamiliarsTrick } from "./FamiliarsTrick.js";
57
58
  export { HairColor } from "./HairColor.js";
59
+ export { HomunculusType } from "./HomunculusType.js";
58
60
  export { Curriculum, Guideline, LessonPackage } from "./Lessons.js";
59
61
  export { LiturgicalChant } from "./LiturgicalChant.js";
60
62
  export { Locale } from "./Locale.js";
@@ -71,7 +73,6 @@ export { MagicalRune } from "./magicalActions/MagicalRune.js";
71
73
  export { ZibiljaRitual } from "./magicalActions/ZibiljaRitual.js";
72
74
  export { MetaCondition } from "./MetaCondition.js";
73
75
  export { PactCategory } from "./PactCategory.js";
74
- export { HomunculusType } from "./HomunculusType.js";
75
76
  export { Patron } from "./Patron.js";
76
77
  export { PatronCategory } from "./PatronCategory.js";
77
78
  export { PersonalityTrait } from "./PersonalityTrait.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optolith-database-schema",
3
- "version": "0.34.10",
3
+ "version": "0.34.12",
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",
@@ -39,19 +39,19 @@
39
39
  "license": "MPL-2.0",
40
40
  "dependencies": {
41
41
  "@elyukai/utils": "^0.3.0",
42
- "tsondb": "^0.19.13",
42
+ "tsondb": "^0.19.18",
43
43
  "yaml": "^2.8.2"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@eslint/js": "^10.0.1",
47
- "@types/node": "^25.3.5",
47
+ "@types/node": "^25.4.0",
48
48
  "commit-and-tag-version": "^12.6.1",
49
49
  "eslint": "^10.0.3",
50
50
  "globals": "^17.4.0",
51
51
  "nodemon": "^3.1.14",
52
52
  "prettier": "^3.8.1",
53
53
  "typescript": "^5.9.3",
54
- "typescript-eslint": "^8.56.1"
54
+ "typescript-eslint": "^8.57.0"
55
55
  },
56
56
  "repository": "github:elyukai/optolith-database-schema",
57
57
  "bugs": {