@optolith/database-schema 0.88.0 → 0.89.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 +11 -0
- package/gen/types.d.ts +62 -0
- package/lib/main.js +1 -0
- package/lib/types/Culture.d.ts +1 -0
- package/lib/types/Culture.js +24 -1
- package/lib/types/_Identifier.d.ts +1 -0
- package/lib/types/_Identifier.js +2 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +1 -0
- package/lib/types/specialAbility/BlessedTradition.d.ts +1 -0
- package/lib/types/specialAbility/BlessedTradition.js +5 -1
- package/lib/types/specialAbility/sub/BlessedTraditionGroup.d.ts +7 -0
- package/lib/types/specialAbility/sub/BlessedTraditionGroup.js +25 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
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.89.0](https://github.com/Optolith/database-schema/compare/v0.88.0...v0.89.0) (2026-10-09)
|
|
6
|
+
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
* blessed tradition groups in cultures
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* blessed tradition groups in cultures ([6a1cc80](https://github.com/Optolith/database-schema/commit/6a1cc805a8f32c32e993fcc6a1226a3aa16daa30))
|
|
14
|
+
* name of people in culture ([1b9fbcf](https://github.com/Optolith/database-schema/commit/1b9fbcfbfbf24a46f73ac8c14959d5c57bc9f317))
|
|
15
|
+
|
|
5
16
|
## [0.88.0](https://github.com/Optolith/database-schema/compare/v0.87.0...v0.88.0) (2026-10-08)
|
|
6
17
|
|
|
7
18
|
### ⚠ BREAKING CHANGES
|
package/gen/types.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export type EntityMap = {
|
|
|
30
30
|
Beutelzauber: Beutelzauber
|
|
31
31
|
Biome: Biome
|
|
32
32
|
BlessedTradition: BlessedTradition
|
|
33
|
+
BlessedTraditionGroup: BlessedTraditionGroup
|
|
33
34
|
Blessing: Blessing
|
|
34
35
|
Book: Book
|
|
35
36
|
BotanicRegion: BotanicRegion
|
|
@@ -563,6 +564,7 @@ export type TypeAliasMap = {
|
|
|
563
564
|
BindingCostMapOptionValue: BindingCostMapOptionValue
|
|
564
565
|
BindingCostPerLevel: BindingCostPerLevel
|
|
565
566
|
BlessedTraditionConstraint: BlessedTraditionConstraint
|
|
567
|
+
BlessedTraditionGroupConstraint: BlessedTraditionGroupConstraint
|
|
566
568
|
BlessedTraditionPrerequisite: BlessedTraditionPrerequisite
|
|
567
569
|
BlessedTraditionsSelectOptionCategory: BlessedTraditionsSelectOptionCategory
|
|
568
570
|
BlessingPerformanceParameters: BlessingPerformanceParameters
|
|
@@ -7855,6 +7857,11 @@ export interface LiturgyTraditionWithAspects {
|
|
|
7855
7857
|
}
|
|
7856
7858
|
|
|
7857
7859
|
export interface BlessedTradition {
|
|
7860
|
+
/**
|
|
7861
|
+
* The group of traditions this tradition belongs to.
|
|
7862
|
+
*/
|
|
7863
|
+
group: BlessedTraditionGroup_ID
|
|
7864
|
+
|
|
7858
7865
|
/**
|
|
7859
7866
|
* Definitions for possible options for the activatable entry, derived from entry categories.
|
|
7860
7867
|
*
|
|
@@ -7973,6 +7980,32 @@ export interface BlessedTraditionTranslation {
|
|
|
7973
7980
|
errata?: Errata
|
|
7974
7981
|
}
|
|
7975
7982
|
|
|
7983
|
+
export interface BlessedTraditionGroup {
|
|
7984
|
+
/**
|
|
7985
|
+
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
7986
|
+
*/
|
|
7987
|
+
translations: {
|
|
7988
|
+
[localeId: string]: BlessedTraditionGroupTranslation
|
|
7989
|
+
}
|
|
7990
|
+
}
|
|
7991
|
+
|
|
7992
|
+
/**
|
|
7993
|
+
* The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
|
|
7994
|
+
*/
|
|
7995
|
+
export type BlessedTraditionGroup_ID = string
|
|
7996
|
+
|
|
7997
|
+
export interface BlessedTraditionGroupTranslation {
|
|
7998
|
+
/**
|
|
7999
|
+
* The name of the group.
|
|
8000
|
+
*/
|
|
8001
|
+
name: string
|
|
8002
|
+
|
|
8003
|
+
/**
|
|
8004
|
+
* The text to use when all Blessed Ones of this group are recommended for a culture.
|
|
8005
|
+
*/
|
|
8006
|
+
nameInCulture: string
|
|
8007
|
+
}
|
|
8008
|
+
|
|
7976
8009
|
export interface Blessing {
|
|
7977
8010
|
/**
|
|
7978
8011
|
* Measurable parameters of a blessing.
|
|
@@ -9865,6 +9898,11 @@ export interface CultureTranslation {
|
|
|
9865
9898
|
*/
|
|
9866
9899
|
nameInPrerequisites?: string
|
|
9867
9900
|
|
|
9901
|
+
/**
|
|
9902
|
+
* The name for people of this culture, if different from the normal culture’s name.
|
|
9903
|
+
*/
|
|
9904
|
+
nameOfPeople?: string
|
|
9905
|
+
|
|
9868
9906
|
/**
|
|
9869
9907
|
* The description of the area knowledge.
|
|
9870
9908
|
*/
|
|
@@ -10119,6 +10157,9 @@ export type CommonnessWeight =
|
|
|
10119
10157
|
| {
|
|
10120
10158
|
kind: "Only"
|
|
10121
10159
|
}
|
|
10160
|
+
| {
|
|
10161
|
+
kind: "ExceptFor"
|
|
10162
|
+
}
|
|
10122
10163
|
|
|
10123
10164
|
export interface ProfessionVariant {
|
|
10124
10165
|
/**
|
|
@@ -21237,6 +21278,10 @@ export type BlessedCommonProfessionConstraint =
|
|
|
21237
21278
|
kind: "Profession"
|
|
21238
21279
|
Profession: ProfessionConstraint
|
|
21239
21280
|
}
|
|
21281
|
+
| {
|
|
21282
|
+
kind: "Group"
|
|
21283
|
+
Group: BlessedTraditionGroupConstraint
|
|
21284
|
+
}
|
|
21240
21285
|
| {
|
|
21241
21286
|
kind: "Religious"
|
|
21242
21287
|
}
|
|
@@ -21258,6 +21303,23 @@ export interface BlessedTraditionConstraint {
|
|
|
21258
21303
|
rarity?: Rarity
|
|
21259
21304
|
}
|
|
21260
21305
|
|
|
21306
|
+
export interface BlessedTraditionGroupConstraint {
|
|
21307
|
+
/**
|
|
21308
|
+
* The blessed tradition group’s identifier.
|
|
21309
|
+
*/
|
|
21310
|
+
id: BlessedTraditionGroup_ID
|
|
21311
|
+
|
|
21312
|
+
/**
|
|
21313
|
+
* Some traditions are more common than others. There may be cultures where some traditions are not represented at all.
|
|
21314
|
+
*/
|
|
21315
|
+
weighted_professions?: Weighted<BlessedTradition_ID>
|
|
21316
|
+
|
|
21317
|
+
/**
|
|
21318
|
+
* Some traditions may be found in a culture, but are not that common.
|
|
21319
|
+
*/
|
|
21320
|
+
rarity?: Rarity
|
|
21321
|
+
}
|
|
21322
|
+
|
|
21261
21323
|
/**
|
|
21262
21324
|
* Reference to a commonness-rated advantage or disadvantage. Commonness-rating terms used in the source books are strongly recommended, common, uncommon, suggested and unsuitable.
|
|
21263
21325
|
*/
|
package/lib/main.js
CHANGED
package/lib/types/Culture.d.ts
CHANGED
|
@@ -243,6 +243,7 @@ export declare const Culture: DB.Entity<"Culture", {
|
|
|
243
243
|
translations: DB.MemberDecl<DB.NestedEntityMap<"CultureTranslation", {
|
|
244
244
|
name: DB.MemberDecl<DB.String, true>;
|
|
245
245
|
nameInPrerequisites: DB.MemberDecl<DB.String, false>;
|
|
246
|
+
nameOfPeople: DB.MemberDecl<DB.String, false>;
|
|
246
247
|
area_knowledge: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AreaKnowledgeTranslation", DB.Object<{
|
|
247
248
|
description: DB.MemberDecl<DB.String, true>;
|
|
248
249
|
abbreviated: DB.MemberDecl<DB.String, true>;
|
package/lib/types/Culture.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
2
|
import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage.js";
|
|
3
|
-
import { AdvantageIdentifier, BlessedTraditionIdentifier, DisadvantageIdentifier, LanguageIdentifier, LanguageSpecializationIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionVariantIdentifier, ScriptIdentifier, SkillIdentifier, SocialStatusIdentifier, } from "./_Identifier.js";
|
|
3
|
+
import { AdvantageIdentifier, BlessedTraditionGroupIdentifier, BlessedTraditionIdentifier, DisadvantageIdentifier, LanguageIdentifier, LanguageSpecializationIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionVariantIdentifier, ScriptIdentifier, SkillIdentifier, SocialStatusIdentifier, } from "./_Identifier.js";
|
|
4
4
|
import { BinarySex } from "./_Sex.js";
|
|
5
5
|
import { NestedTranslationMap } from "./Locale.js";
|
|
6
6
|
import { Errata } from "./source/_Erratum.js";
|
|
@@ -67,6 +67,10 @@ export const Culture = DB.Entity(import.meta.url, {
|
|
|
67
67
|
comment: "The culture’s name in prerequisites, if different from the normal culture’s name.",
|
|
68
68
|
type: DB.String({ minLength: 1 }),
|
|
69
69
|
}),
|
|
70
|
+
nameOfPeople: DB.Optional({
|
|
71
|
+
comment: "The name for people of this culture, if different from the normal culture’s name.",
|
|
72
|
+
type: DB.String({ minLength: 1 }),
|
|
73
|
+
}),
|
|
70
74
|
area_knowledge: DB.Required({
|
|
71
75
|
comment: "The description of the area knowledge.",
|
|
72
76
|
type: DB.IncludeIdentifier(AreaKnowledgeTranslation),
|
|
@@ -144,6 +148,7 @@ const CommonnessWeight = DB.Enum(import.meta.url, {
|
|
|
144
148
|
values: () => ({
|
|
145
149
|
Mostly: DB.EnumCase({ type: null }),
|
|
146
150
|
Only: DB.EnumCase({ type: null }),
|
|
151
|
+
ExceptFor: DB.EnumCase({ type: null }),
|
|
147
152
|
}),
|
|
148
153
|
});
|
|
149
154
|
const Weighted = DB.GenTypeAlias(import.meta.url, {
|
|
@@ -243,6 +248,23 @@ const BlessedTraditionConstraint = DB.TypeAlias(import.meta.url, {
|
|
|
243
248
|
}),
|
|
244
249
|
}),
|
|
245
250
|
});
|
|
251
|
+
const BlessedTraditionGroupConstraint = DB.TypeAlias(import.meta.url, {
|
|
252
|
+
name: "BlessedTraditionGroupConstraint",
|
|
253
|
+
type: () => DB.Object({
|
|
254
|
+
id: DB.Required({
|
|
255
|
+
comment: "The blessed tradition group’s identifier.",
|
|
256
|
+
type: BlessedTraditionGroupIdentifier(),
|
|
257
|
+
}),
|
|
258
|
+
weighted_professions: DB.Optional({
|
|
259
|
+
comment: "Some traditions are more common than others. There may be cultures where some traditions are not represented at all.",
|
|
260
|
+
type: DB.GenIncludeIdentifier(Weighted, [BlessedTraditionIdentifier()]),
|
|
261
|
+
}),
|
|
262
|
+
rarity: DB.Optional({
|
|
263
|
+
comment: "Some traditions may be found in a culture, but are not that common.",
|
|
264
|
+
type: DB.IncludeIdentifier(Rarity),
|
|
265
|
+
}),
|
|
266
|
+
}),
|
|
267
|
+
});
|
|
246
268
|
const MundaneCommonProfessionConstraint = DB.Enum(import.meta.url, {
|
|
247
269
|
name: "MundaneCommonProfessionConstraint",
|
|
248
270
|
values: () => ({
|
|
@@ -262,6 +284,7 @@ const BlessedCommonProfessionConstraint = DB.Enum(import.meta.url, {
|
|
|
262
284
|
values: () => ({
|
|
263
285
|
Tradition: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionConstraint) }),
|
|
264
286
|
Profession: DB.EnumCase({ type: DB.IncludeIdentifier(ProfessionConstraint) }),
|
|
287
|
+
Group: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionGroupConstraint) }),
|
|
265
288
|
Religious: DB.EnumCase({ type: null }),
|
|
266
289
|
}),
|
|
267
290
|
});
|
|
@@ -27,6 +27,7 @@ export declare const BannzeichenOptionIdentifier: () => R;
|
|
|
27
27
|
export declare const BeutelzauberIdentifier: () => R;
|
|
28
28
|
export declare const BiomeIdentifier: () => R;
|
|
29
29
|
export declare const BlessedTraditionIdentifier: () => R;
|
|
30
|
+
export declare const BlessedTraditionGroupIdentifier: () => R;
|
|
30
31
|
export declare const BlessingIdentifier: () => R;
|
|
31
32
|
export declare const BookIdentifier: () => R;
|
|
32
33
|
export declare const BowlEnchantmentIdentifier: () => R;
|
package/lib/types/_Identifier.js
CHANGED
|
@@ -128,6 +128,7 @@ import { Sermon } from "./specialAbility/Sermon.js";
|
|
|
128
128
|
import { SexSpecialAbility } from "./specialAbility/SexSpecialAbility.js";
|
|
129
129
|
import { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpecialAbility.js";
|
|
130
130
|
import { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
|
|
131
|
+
import { BlessedTraditionGroup } from "./specialAbility/sub/BlessedTraditionGroup.js";
|
|
131
132
|
import { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
|
|
132
133
|
import { Language, LanguageSpecialization } from "./specialAbility/sub/Language.js";
|
|
133
134
|
import { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.js";
|
|
@@ -194,6 +195,7 @@ export const BannzeichenOptionIdentifier = () => R(BannzeichenOption);
|
|
|
194
195
|
export const BeutelzauberIdentifier = () => R(Beutelzauber);
|
|
195
196
|
export const BiomeIdentifier = () => R(Biome);
|
|
196
197
|
export const BlessedTraditionIdentifier = () => R(BlessedTradition);
|
|
198
|
+
export const BlessedTraditionGroupIdentifier = () => R(BlessedTraditionGroup);
|
|
197
199
|
export const BlessingIdentifier = () => R(Blessing);
|
|
198
200
|
export const BookIdentifier = () => R(Book);
|
|
199
201
|
export const BowlEnchantmentIdentifier = () => R(BowlEnchantment);
|
package/lib/types/index.d.ts
CHANGED
|
@@ -132,6 +132,7 @@ export { Sermon } from "./specialAbility/Sermon.js";
|
|
|
132
132
|
export { SexSpecialAbility } from "./specialAbility/SexSpecialAbility.js";
|
|
133
133
|
export { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpecialAbility.js";
|
|
134
134
|
export { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
|
|
135
|
+
export { BlessedTraditionGroup } from "./specialAbility/sub/BlessedTraditionGroup.ts";
|
|
135
136
|
export { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
|
|
136
137
|
export { Language } from "./specialAbility/sub/Language.js";
|
|
137
138
|
export { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.ts";
|
package/lib/types/index.js
CHANGED
|
@@ -132,6 +132,7 @@ export { Sermon } from "./specialAbility/Sermon.js";
|
|
|
132
132
|
export { SexSpecialAbility } from "./specialAbility/SexSpecialAbility.js";
|
|
133
133
|
export { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpecialAbility.js";
|
|
134
134
|
export { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
|
|
135
|
+
export { BlessedTraditionGroup } from "./specialAbility/sub/BlessedTraditionGroup.js";
|
|
135
136
|
export { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
|
|
136
137
|
export { Language } from "./specialAbility/sub/Language.js";
|
|
137
138
|
export { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
2
|
export declare const BlessedTradition: DB.Entity<"BlessedTradition", {
|
|
3
|
+
group: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
3
4
|
select_options: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptions", DB.Object<{
|
|
4
5
|
derived: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionCategory", {
|
|
5
6
|
Blessings: DB.EnumCase<null>;
|
|
@@ -4,7 +4,7 @@ import { ap_value, ap_value_append, ap_value_l10n } from "../_ActivatableAdventu
|
|
|
4
4
|
import { activatableDisplayNameCustomizer } from "../_ActivatableNames.js";
|
|
5
5
|
import { explicit_select_options, select_options, verifySelectOptionRules, } from "../_ActivatableSelectOptions.js";
|
|
6
6
|
import { skill_applications, skill_uses } from "../_ActivatableSkillApplicationsAndUses.js";
|
|
7
|
-
import { AspectIdentifier, AttributeIdentifier, BlessingIdentifier, GeneralIdentifier, SkillIdentifier, } from "../_Identifier.js";
|
|
7
|
+
import { AspectIdentifier, AttributeIdentifier, BlessedTraditionGroupIdentifier, BlessingIdentifier, GeneralIdentifier, SkillIdentifier, } from "../_Identifier.js";
|
|
8
8
|
import { CombatTechniqueIdentifier } from "../_IdentifierGroup.js";
|
|
9
9
|
import { GeneralPrerequisites } from "../_Prerequisite.js";
|
|
10
10
|
import { NestedTranslationMap } from "../Locale.js";
|
|
@@ -15,6 +15,10 @@ export const BlessedTradition = DB.Entity(import.meta.url, {
|
|
|
15
15
|
name: "BlessedTradition",
|
|
16
16
|
namePlural: "BlessedTraditions",
|
|
17
17
|
type: () => DB.Object({
|
|
18
|
+
group: DB.Required({
|
|
19
|
+
comment: "The group of traditions this tradition belongs to.",
|
|
20
|
+
type: BlessedTraditionGroupIdentifier(),
|
|
21
|
+
}),
|
|
18
22
|
select_options,
|
|
19
23
|
explicit_select_options,
|
|
20
24
|
skill_applications,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
export declare const BlessedTraditionGroup: DB.Entity<"BlessedTraditionGroup", {
|
|
3
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"BlessedTraditionGroupTranslation", {
|
|
4
|
+
name: DB.MemberDecl<DB.String, true>;
|
|
5
|
+
nameInCulture: DB.MemberDecl<DB.String, true>;
|
|
6
|
+
}>, true>;
|
|
7
|
+
}, undefined>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
import { NestedTranslationMap } from "../../Locale.js";
|
|
3
|
+
export const BlessedTraditionGroup = DB.Entity(import.meta.url, {
|
|
4
|
+
name: "BlessedTraditionGroup",
|
|
5
|
+
namePlural: "BlessedTraditionGroup",
|
|
6
|
+
type: () => DB.Object({
|
|
7
|
+
translations: NestedTranslationMap(DB.Required, "BlessedTraditionGroup", DB.Object({
|
|
8
|
+
name: DB.Required({
|
|
9
|
+
comment: "The name of the group.",
|
|
10
|
+
type: DB.String({ minLength: 1 }),
|
|
11
|
+
}),
|
|
12
|
+
nameInCulture: DB.Required({
|
|
13
|
+
comment: "The text to use when all Blessed Ones of this group are recommended for a culture.",
|
|
14
|
+
type: DB.String({ minLength: 1 }),
|
|
15
|
+
}),
|
|
16
|
+
})),
|
|
17
|
+
}),
|
|
18
|
+
instanceDisplayName: {},
|
|
19
|
+
uniqueConstraints: [
|
|
20
|
+
{
|
|
21
|
+
entityMapKeyPath: "translations",
|
|
22
|
+
keyPathInEntityMap: "name",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optolith/database-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.89.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",
|