optolith-database-schema 0.33.0 → 0.34.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 +13 -0
- package/gen/types.d.ts +84 -0
- package/lib/types/Attribute.d.ts +10 -0
- package/lib/types/Attribute.js +5 -0
- package/lib/types/SkillGroup.d.ts +8 -0
- package/lib/types/SkillGroup.js +5 -0
- package/lib/types/_Color.d.ts +19 -0
- package/lib/types/_Color.js +27 -0
- package/lib/types/rule/OptionalRule.d.ts +5 -0
- package/lib/types/rule/OptionalRule.js +16 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
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.0](https://github.com/elyukai/optolith-database-schema/compare/v0.33.0...v0.34.0) (2026-03-08)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* define attribute and skill group colors
|
|
11
|
+
* atomic specification of how an optional rule influences game complexity
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* atomic specification of how an optional rule influences game complexity ([b2f1c5d](https://github.com/elyukai/optolith-database-schema/commit/b2f1c5dfd64777cb083da4bb1964ad4a3e219e8b))
|
|
16
|
+
* define attribute and skill group colors ([8aedafb](https://github.com/elyukai/optolith-database-schema/commit/8aedafb8136439fa9a1011ea94ee2f301f0d6f64))
|
|
17
|
+
|
|
5
18
|
## [0.33.0](https://github.com/elyukai/optolith-database-schema/compare/v0.32.0...v0.33.0) (2026-02-25)
|
|
6
19
|
|
|
7
20
|
|
package/gen/types.d.ts
CHANGED
|
@@ -225,6 +225,7 @@ export type EnumMap = {
|
|
|
225
225
|
ArcaneEnergyCostByLevelStyle: ArcaneEnergyCostByLevelStyle
|
|
226
226
|
ArcaneTraditionPrerequisiteGroup: ArcaneTraditionPrerequisiteGroup
|
|
227
227
|
ArmorComplexity: ArmorComplexity
|
|
228
|
+
AttributeColor: AttributeColor
|
|
228
229
|
AutomaticEntryAction: AutomaticEntryAction
|
|
229
230
|
AutomaticEntryTarget: AutomaticEntryTarget
|
|
230
231
|
AutomaticEntryTargetSelectionList: AutomaticEntryTargetSelectionList
|
|
@@ -258,6 +259,7 @@ export type EnumMap = {
|
|
|
258
259
|
CommonProfessionConstraintsOperation: CommonProfessionConstraintsOperation
|
|
259
260
|
CommonProfessions: CommonProfessions
|
|
260
261
|
Complexity: Complexity
|
|
262
|
+
ComplexityInfluence: ComplexityInfluence
|
|
261
263
|
ContentNode: ContentNode
|
|
262
264
|
CoreRuleDerivableContentIdentifier: CoreRuleDerivableContentIdentifier
|
|
263
265
|
Cost: Cost
|
|
@@ -296,6 +298,7 @@ export type EnumMap = {
|
|
|
296
298
|
GeodeRitualDuration: GeodeRitualDuration
|
|
297
299
|
GeodeRitualPrerequisiteGroup: GeodeRitualPrerequisiteGroup
|
|
298
300
|
GeodeRitualRange: GeodeRitualRange
|
|
301
|
+
GradientColor: GradientColor
|
|
299
302
|
HitZone: HitZone
|
|
300
303
|
ImprovementCost: ImprovementCost
|
|
301
304
|
IndefiniteArcaneEnergyCostModifierArithmetic: IndefiniteArcaneEnergyCostModifierArithmetic
|
|
@@ -3667,6 +3670,11 @@ export interface Attribute {
|
|
|
3667
3670
|
*/
|
|
3668
3671
|
position: number
|
|
3669
3672
|
|
|
3673
|
+
/**
|
|
3674
|
+
* The display color of the attribute.
|
|
3675
|
+
*/
|
|
3676
|
+
color: AttributeColor
|
|
3677
|
+
|
|
3670
3678
|
/**
|
|
3671
3679
|
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
3672
3680
|
*/
|
|
@@ -3697,6 +3705,35 @@ export interface AttributeTranslation {
|
|
|
3697
3705
|
description: string
|
|
3698
3706
|
}
|
|
3699
3707
|
|
|
3708
|
+
/**
|
|
3709
|
+
* A display color for an attribute.
|
|
3710
|
+
*/
|
|
3711
|
+
export type AttributeColor =
|
|
3712
|
+
| {
|
|
3713
|
+
kind: "Red"
|
|
3714
|
+
}
|
|
3715
|
+
| {
|
|
3716
|
+
kind: "Purple"
|
|
3717
|
+
}
|
|
3718
|
+
| {
|
|
3719
|
+
kind: "Green"
|
|
3720
|
+
}
|
|
3721
|
+
| {
|
|
3722
|
+
kind: "Black"
|
|
3723
|
+
}
|
|
3724
|
+
| {
|
|
3725
|
+
kind: "Yellow"
|
|
3726
|
+
}
|
|
3727
|
+
| {
|
|
3728
|
+
kind: "Blue"
|
|
3729
|
+
}
|
|
3730
|
+
| {
|
|
3731
|
+
kind: "White"
|
|
3732
|
+
}
|
|
3733
|
+
| {
|
|
3734
|
+
kind: "Orange"
|
|
3735
|
+
}
|
|
3736
|
+
|
|
3700
3737
|
/**
|
|
3701
3738
|
* The skill’s applications
|
|
3702
3739
|
*/
|
|
@@ -3783,6 +3820,11 @@ export interface SkillGroup {
|
|
|
3783
3820
|
*/
|
|
3784
3821
|
check: SkillCheck
|
|
3785
3822
|
|
|
3823
|
+
/**
|
|
3824
|
+
* The display color of the skill group.
|
|
3825
|
+
*/
|
|
3826
|
+
color: GradientColor
|
|
3827
|
+
|
|
3786
3828
|
/**
|
|
3787
3829
|
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
3788
3830
|
*/
|
|
@@ -3808,6 +3850,29 @@ export interface SkillGroupTranslation {
|
|
|
3808
3850
|
longName: string
|
|
3809
3851
|
}
|
|
3810
3852
|
|
|
3853
|
+
/**
|
|
3854
|
+
* A display color for entries that have a certain color as a gradient in the header of their box in the official publications.
|
|
3855
|
+
*/
|
|
3856
|
+
export type GradientColor =
|
|
3857
|
+
| {
|
|
3858
|
+
kind: "TribalTeal"
|
|
3859
|
+
}
|
|
3860
|
+
| {
|
|
3861
|
+
kind: "OldRed"
|
|
3862
|
+
}
|
|
3863
|
+
| {
|
|
3864
|
+
kind: "Verdigris"
|
|
3865
|
+
}
|
|
3866
|
+
| {
|
|
3867
|
+
kind: "Gaia"
|
|
3868
|
+
}
|
|
3869
|
+
| {
|
|
3870
|
+
kind: "SanMarino"
|
|
3871
|
+
}
|
|
3872
|
+
| {
|
|
3873
|
+
kind: "LightHarvestGold"
|
|
3874
|
+
}
|
|
3875
|
+
|
|
3811
3876
|
/**
|
|
3812
3877
|
* The publications where you can find the entry.
|
|
3813
3878
|
*/
|
|
@@ -7065,6 +7130,11 @@ export interface OptionalRule {
|
|
|
7065
7130
|
*/
|
|
7066
7131
|
isMissingImplementation: boolean
|
|
7067
7132
|
|
|
7133
|
+
/**
|
|
7134
|
+
* How this optional rule influences the complexity of the game.
|
|
7135
|
+
*/
|
|
7136
|
+
complexityInfluence: ComplexityInfluence
|
|
7137
|
+
|
|
7068
7138
|
prerequisites?: RulePrerequisites
|
|
7069
7139
|
|
|
7070
7140
|
/**
|
|
@@ -7104,6 +7174,20 @@ export interface OptionalRuleTranslation {
|
|
|
7104
7174
|
errata?: Errata
|
|
7105
7175
|
}
|
|
7106
7176
|
|
|
7177
|
+
/**
|
|
7178
|
+
* How this optional rule influences the complexity of the game.
|
|
7179
|
+
*/
|
|
7180
|
+
export type ComplexityInfluence =
|
|
7181
|
+
| {
|
|
7182
|
+
kind: "Less"
|
|
7183
|
+
}
|
|
7184
|
+
| {
|
|
7185
|
+
kind: "Unchanged"
|
|
7186
|
+
}
|
|
7187
|
+
| {
|
|
7188
|
+
kind: "More"
|
|
7189
|
+
}
|
|
7190
|
+
|
|
7107
7191
|
/**
|
|
7108
7192
|
* The effect description may be either a plain text or a text that is divided by a list of effects for each quality level. It may also be a list for each two quality levels.
|
|
7109
7193
|
*/
|
package/lib/types/Attribute.d.ts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
2
|
export declare const Attribute: DB.Entity<"Attribute", {
|
|
3
3
|
position: DB.MemberDecl<DB.Integer, true>;
|
|
4
|
+
color: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"AttributeColor", {
|
|
5
|
+
Red: DB.EnumCase<null>;
|
|
6
|
+
Purple: DB.EnumCase<null>;
|
|
7
|
+
Green: DB.EnumCase<null>;
|
|
8
|
+
Black: DB.EnumCase<null>;
|
|
9
|
+
Yellow: DB.EnumCase<null>;
|
|
10
|
+
Blue: DB.EnumCase<null>;
|
|
11
|
+
White: DB.EnumCase<null>;
|
|
12
|
+
Orange: DB.EnumCase<null>;
|
|
13
|
+
}, []>>, true>;
|
|
4
14
|
translations: DB.MemberDecl<DB.NestedEntityMap<"AttributeTranslation", {
|
|
5
15
|
name: DB.MemberDecl<DB.String, true>;
|
|
6
16
|
abbreviation: DB.MemberDecl<DB.String, true>;
|
package/lib/types/Attribute.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
2
|
import { NestedTranslationMap } from "./Locale.js";
|
|
3
|
+
import { AttributeColor } from "./_Color.js";
|
|
3
4
|
export const Attribute = DB.Entity(import.meta.url, {
|
|
4
5
|
name: "Attribute",
|
|
5
6
|
namePlural: "Attributes",
|
|
@@ -9,6 +10,10 @@ export const Attribute = DB.Entity(import.meta.url, {
|
|
|
9
10
|
comment: "The position of the attribute in lists. This has to be a unique value.",
|
|
10
11
|
type: DB.Integer({ minimum: 0 }),
|
|
11
12
|
}),
|
|
13
|
+
color: DB.Required({
|
|
14
|
+
comment: "The display color of the attribute.",
|
|
15
|
+
type: DB.IncludeIdentifier(AttributeColor),
|
|
16
|
+
}),
|
|
12
17
|
translations: NestedTranslationMap(DB.Required, "Attribute", DB.Object({
|
|
13
18
|
name: DB.Required({
|
|
14
19
|
comment: "The attribute’s name.",
|
|
@@ -2,6 +2,14 @@ import * as DB from "tsondb/schema/dsl";
|
|
|
2
2
|
export declare const SkillGroup: DB.Entity<"SkillGroup", {
|
|
3
3
|
position: DB.MemberDecl<DB.Integer, true>;
|
|
4
4
|
check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SkillCheck", DB.Array<DB.ReferenceIdentifier>, []>>, true>;
|
|
5
|
+
color: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"GradientColor", {
|
|
6
|
+
TribalTeal: DB.EnumCase<null>;
|
|
7
|
+
OldRed: DB.EnumCase<null>;
|
|
8
|
+
Verdigris: DB.EnumCase<null>;
|
|
9
|
+
Gaia: DB.EnumCase<null>;
|
|
10
|
+
SanMarino: DB.EnumCase<null>;
|
|
11
|
+
LightHarvestGold: DB.EnumCase<null>;
|
|
12
|
+
}, []>>, true>;
|
|
5
13
|
translations: DB.MemberDecl<DB.NestedEntityMap<"SkillGroupTranslation", {
|
|
6
14
|
name: DB.MemberDecl<DB.String, true>;
|
|
7
15
|
longName: DB.MemberDecl<DB.String, true>;
|
package/lib/types/SkillGroup.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
import { GradientColor } from "./_Color.js";
|
|
2
3
|
import { SkillCheck } from "./_SkillCheck.js";
|
|
3
4
|
import { NestedTranslationMap } from "./Locale.js";
|
|
4
5
|
export const SkillGroup = DB.Entity(import.meta.url, {
|
|
@@ -13,6 +14,10 @@ export const SkillGroup = DB.Entity(import.meta.url, {
|
|
|
13
14
|
comment: "The skill group’s skill check attributes",
|
|
14
15
|
type: DB.IncludeIdentifier(SkillCheck),
|
|
15
16
|
}),
|
|
17
|
+
color: DB.Required({
|
|
18
|
+
comment: "The display color of the skill group.",
|
|
19
|
+
type: DB.IncludeIdentifier(GradientColor),
|
|
20
|
+
}),
|
|
16
21
|
translations: NestedTranslationMap(DB.Required, "SkillGroup", DB.Object({
|
|
17
22
|
name: DB.Required({
|
|
18
23
|
comment: "The skill group’s name.",
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
export declare const AttributeColor: DB.Enum<"AttributeColor", {
|
|
3
|
+
Red: DB.EnumCase<null>;
|
|
4
|
+
Purple: DB.EnumCase<null>;
|
|
5
|
+
Green: DB.EnumCase<null>;
|
|
6
|
+
Black: DB.EnumCase<null>;
|
|
7
|
+
Yellow: DB.EnumCase<null>;
|
|
8
|
+
Blue: DB.EnumCase<null>;
|
|
9
|
+
White: DB.EnumCase<null>;
|
|
10
|
+
Orange: DB.EnumCase<null>;
|
|
11
|
+
}, []>;
|
|
12
|
+
export declare const GradientColor: DB.Enum<"GradientColor", {
|
|
13
|
+
TribalTeal: DB.EnumCase<null>;
|
|
14
|
+
OldRed: DB.EnumCase<null>;
|
|
15
|
+
Verdigris: DB.EnumCase<null>;
|
|
16
|
+
Gaia: DB.EnumCase<null>;
|
|
17
|
+
SanMarino: DB.EnumCase<null>;
|
|
18
|
+
LightHarvestGold: DB.EnumCase<null>;
|
|
19
|
+
}, []>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
export const AttributeColor = DB.Enum(import.meta.url, {
|
|
3
|
+
name: "AttributeColor",
|
|
4
|
+
comment: "A display color for an attribute.",
|
|
5
|
+
values: () => ({
|
|
6
|
+
Red: DB.EnumCase({ type: null }),
|
|
7
|
+
Purple: DB.EnumCase({ type: null }),
|
|
8
|
+
Green: DB.EnumCase({ type: null }),
|
|
9
|
+
Black: DB.EnumCase({ type: null }),
|
|
10
|
+
Yellow: DB.EnumCase({ type: null }),
|
|
11
|
+
Blue: DB.EnumCase({ type: null }),
|
|
12
|
+
White: DB.EnumCase({ type: null }),
|
|
13
|
+
Orange: DB.EnumCase({ type: null }),
|
|
14
|
+
}),
|
|
15
|
+
});
|
|
16
|
+
export const GradientColor = DB.Enum(import.meta.url, {
|
|
17
|
+
name: "GradientColor",
|
|
18
|
+
comment: "A display color for entries that have a certain color as a gradient in the header of their box in the official publications.",
|
|
19
|
+
values: () => ({
|
|
20
|
+
TribalTeal: DB.EnumCase({ type: null }), // HEX #507471 / CMYK 55 13 33 48
|
|
21
|
+
OldRed: DB.EnumCase({ type: null }), // HEX #8c3537 / CMYK 51 91 81 6
|
|
22
|
+
Verdigris: DB.EnumCase({ type: null }), // HEX #5b6235 / CMYK 70 53 91 17
|
|
23
|
+
Gaia: DB.EnumCase({ type: null }), // HEX #62934b / CMYK 64 17 82 13
|
|
24
|
+
SanMarino: DB.EnumCase({ type: null }), // HEX #4f70a8 / CMYK 75 53 10 2
|
|
25
|
+
LightHarvestGold: DB.EnumCase({ type: null }), // HEX #dbb578 / CMYK 9 26 56 9
|
|
26
|
+
}),
|
|
27
|
+
});
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
2
|
export declare const OptionalRule: DB.Entity<"OptionalRule", {
|
|
3
3
|
isMissingImplementation: DB.MemberDecl<DB.Boolean, true>;
|
|
4
|
+
complexityInfluence: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ComplexityInfluence", {
|
|
5
|
+
Less: DB.EnumCase<null>;
|
|
6
|
+
Unchanged: DB.EnumCase<null>;
|
|
7
|
+
More: DB.EnumCase<null>;
|
|
8
|
+
}, []>>, true>;
|
|
4
9
|
prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RulePrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
|
|
5
10
|
Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
|
|
6
11
|
Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
|
|
@@ -11,6 +11,10 @@ export const OptionalRule = DB.Entity(import.meta.url, {
|
|
|
11
11
|
comment: "Has the optional rule not been implemented in Optolith yet? This is also true if the optional rule does not (currently) apply to any Optolith feature.",
|
|
12
12
|
type: DB.Boolean(),
|
|
13
13
|
}),
|
|
14
|
+
complexityInfluence: DB.Required({
|
|
15
|
+
comment: "How this optional rule influences the complexity of the game.",
|
|
16
|
+
type: DB.IncludeIdentifier(ComplexityInfluence),
|
|
17
|
+
}),
|
|
14
18
|
prerequisites: DB.Optional({
|
|
15
19
|
type: DB.IncludeIdentifier(RulePrerequisites),
|
|
16
20
|
}),
|
|
@@ -41,3 +45,15 @@ export const OptionalRule = DB.Entity(import.meta.url, {
|
|
|
41
45
|
},
|
|
42
46
|
],
|
|
43
47
|
});
|
|
48
|
+
const ComplexityInfluence = DB.Enum(import.meta.url, {
|
|
49
|
+
name: "ComplexityInfluence",
|
|
50
|
+
comment: "How this optional rule influences the complexity of the game.",
|
|
51
|
+
values: () => ({
|
|
52
|
+
Less: DB.EnumCase({ comment: "The optional rule makes the game less complex.", type: null }),
|
|
53
|
+
Unchanged: DB.EnumCase({
|
|
54
|
+
comment: "The optional rule does not change the complexity of the game.",
|
|
55
|
+
type: null,
|
|
56
|
+
}),
|
|
57
|
+
More: DB.EnumCase({ comment: "The optional rule makes the game more complex.", type: null }),
|
|
58
|
+
}),
|
|
59
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "optolith-database-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.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",
|