@optolith/database-schema 0.100.0 → 0.102.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 +28 -0
- package/gen/types.d.ts +147 -12
- package/lib/types/Culture.d.ts +312 -152
- package/lib/types/Locale.d.ts +16 -1
- package/lib/types/Locale.js +13 -0
- package/lib/types/Profession.d.ts +675 -355
- package/lib/types/Race.d.ts +624 -304
- package/lib/types/_ActivatableCombat.d.ts +2 -2
- package/lib/types/_ActivatableCombat.js +5 -5
- package/lib/types/_CommonnessRatedAdvantageDisadvantage.d.ts +80 -2
- package/lib/types/_CommonnessRatedAdvantageDisadvantage.js +58 -3
- package/lib/types/equipment/item/ItemComponent.d.ts +14 -2
- package/lib/types/equipment/item/ItemComponent.js +49 -15
- package/lib/types/prerequisites/PrerequisiteGroups.d.ts +19 -0
- package/lib/types/prerequisites/PrerequisiteGroups.js +1 -0
- package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +2 -2
- package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +2 -2
- package/lib/types/specialAbility/CombatSpecialAbility.d.ts +2 -2
- package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +2 -2
- package/lib/types/specialAbility/CommandSpecialAbility.d.ts +2 -2
- package/package.json +2 -2
|
@@ -121,11 +121,11 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
|
|
|
121
121
|
race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
122
122
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
123
123
|
hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
|
|
124
|
+
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
124
125
|
}>, []>>, false>;
|
|
125
|
-
|
|
126
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
|
|
126
127
|
restrictions: DB.MemberDecl<DB.String, true>;
|
|
127
128
|
}>, false>;
|
|
128
|
-
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
129
129
|
}>, []>>>, true>;
|
|
130
130
|
}>, []>>>;
|
|
131
131
|
}, []>>, true>;
|
|
@@ -275,16 +275,12 @@ const SpecificApplicableCombatTechnique = DB.TypeAlias(import.meta.url, {
|
|
|
275
275
|
restrictions: DB.Optional({
|
|
276
276
|
type: DB.IncludeIdentifier(ApplicableSpecificCombatTechniquesRestrictions),
|
|
277
277
|
}),
|
|
278
|
-
|
|
278
|
+
translations: NestedTranslationMap(DB.Optional, "SpecificApplicableCombatTechnique", DB.Object({
|
|
279
279
|
restrictions: DB.Required({
|
|
280
280
|
comment: "The additional restriction(s) of the combat technique.",
|
|
281
281
|
type: DB.String({ minLength: 1, markdown: "inline" }),
|
|
282
282
|
}),
|
|
283
283
|
})),
|
|
284
|
-
weapons: DB.Optional({
|
|
285
|
-
comment: "The specific weapons this combat special ability is only applicable to.",
|
|
286
|
-
type: DB.Array(WeaponIdentifier(), { minItems: 1 }),
|
|
287
|
-
}),
|
|
288
284
|
}),
|
|
289
285
|
});
|
|
290
286
|
const ApplicableAllCombatTechniquesRestrictions = DB.TypeAlias(import.meta.url, {
|
|
@@ -349,6 +345,10 @@ const ApplicableSpecificCombatTechniquesRestrictions = DB.TypeAlias(import.meta.
|
|
|
349
345
|
type: DB.Integer({ minimum: 1 }),
|
|
350
346
|
}),
|
|
351
347
|
hasOneBluntSide: DB.Optional({ type: DB.Boolean() }),
|
|
348
|
+
weapons: DB.Optional({
|
|
349
|
+
comment: "The specific weapons this combat special ability is only applicable to.",
|
|
350
|
+
type: DB.Array(WeaponIdentifier(), { minItems: 1 }),
|
|
351
|
+
}),
|
|
352
352
|
}, { minProperties: 1 }),
|
|
353
353
|
});
|
|
354
354
|
const ApplicableCombatTechniquesNegativeCombatTechniquesRestriction = DB.GenTypeAlias(import.meta.url, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const SingleCommonnessRatedAdvantageDisadvantage: DB.TypeAlias<"SingleCommonnessRatedAdvantageDisadvantage", DB.Object<{
|
|
3
3
|
id: DB.MemberDecl<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>, true>;
|
|
4
4
|
level: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CommonnessRatedAdvantageDisadvantageLevel", {
|
|
5
5
|
Constant: DB.EnumCase<DB.Integer>;
|
|
@@ -31,9 +31,87 @@ export declare const CommonnessRatedAdvantageDisadvantage: DB.TypeAlias<"Commonn
|
|
|
31
31
|
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
32
32
|
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
33
33
|
}, []>>>, false>;
|
|
34
|
-
translations: DB.MemberDecl<DB.NestedEntityMap<"
|
|
34
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SingleCommonnessRatedAdvantageDisadvantageTranslation", {
|
|
35
35
|
options: DB.MemberDecl<DB.String, false>;
|
|
36
36
|
note: DB.MemberDecl<DB.String, false>;
|
|
37
37
|
full: DB.MemberDecl<DB.String, false>;
|
|
38
38
|
}>, false>;
|
|
39
39
|
}>, [Identifier: DB.Param<"Identifier", DB.Type>]>;
|
|
40
|
+
export declare const CommonnessRatedAdvantageDisadvantage: DB.Enum<"CommonnessRatedAdvantageDisadvantage", {
|
|
41
|
+
Single: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"SingleCommonnessRatedAdvantageDisadvantage", DB.Object<{
|
|
42
|
+
id: DB.MemberDecl<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>, true>;
|
|
43
|
+
level: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CommonnessRatedAdvantageDisadvantageLevel", {
|
|
44
|
+
Constant: DB.EnumCase<DB.Integer>;
|
|
45
|
+
Range: DB.EnumCase<DB.Object<{
|
|
46
|
+
min: DB.MemberDecl<DB.Integer, true>;
|
|
47
|
+
max: DB.MemberDecl<DB.Integer, true>;
|
|
48
|
+
}>>;
|
|
49
|
+
}, []>>, false>;
|
|
50
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"CommonnessSelectOptionIdentifier", {
|
|
51
|
+
SkillGroup: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
52
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
53
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
54
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
55
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
56
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
57
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
58
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
59
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
60
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
61
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
62
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
63
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
64
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
65
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
66
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
67
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
68
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
69
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
70
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
71
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
72
|
+
}, []>>>, false>;
|
|
73
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SingleCommonnessRatedAdvantageDisadvantageTranslation", {
|
|
74
|
+
options: DB.MemberDecl<DB.String, false>;
|
|
75
|
+
note: DB.MemberDecl<DB.String, false>;
|
|
76
|
+
full: DB.MemberDecl<DB.String, false>;
|
|
77
|
+
}>, false>;
|
|
78
|
+
}>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>;
|
|
79
|
+
Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"CommonnessRatedAdvantageDisadvantageGroup", DB.Object<{
|
|
80
|
+
list: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"SingleCommonnessRatedAdvantageDisadvantageInGroup", DB.Object<{
|
|
81
|
+
id: DB.MemberDecl<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>, true>;
|
|
82
|
+
level: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CommonnessRatedAdvantageDisadvantageLevel", {
|
|
83
|
+
Constant: DB.EnumCase<DB.Integer>;
|
|
84
|
+
Range: DB.EnumCase<DB.Object<{
|
|
85
|
+
min: DB.MemberDecl<DB.Integer, true>;
|
|
86
|
+
max: DB.MemberDecl<DB.Integer, true>;
|
|
87
|
+
}>>;
|
|
88
|
+
}, []>>, false>;
|
|
89
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"CommonnessSelectOptionIdentifier", {
|
|
90
|
+
SkillGroup: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
91
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
92
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
93
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
94
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
95
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
96
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
97
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
98
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
99
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
100
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
101
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
102
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
103
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
104
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
105
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
106
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
107
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
108
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
109
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
110
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
111
|
+
}, []>>>, false>;
|
|
112
|
+
}>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, true>;
|
|
113
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageGroupTranslation", {
|
|
114
|
+
text: DB.MemberDecl<DB.String, true>;
|
|
115
|
+
}>, true>;
|
|
116
|
+
}>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>;
|
|
117
|
+
}, [Identifier: DB.Param<"Identifier", DB.Type>]>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
2
|
import { CommonnessSelectOptionIdentifier } from "./_IdentifierGroup.js";
|
|
3
3
|
import { NestedTranslationMap } from "./Locale.js";
|
|
4
|
-
export const
|
|
5
|
-
name: "
|
|
4
|
+
export const SingleCommonnessRatedAdvantageDisadvantage = DB.GenTypeAlias(import.meta.url, {
|
|
5
|
+
name: "SingleCommonnessRatedAdvantageDisadvantage",
|
|
6
6
|
comment: "Reference to a commonness-rated advantage or disadvantage. Commonness-rating terms used in the source books are strongly recommended, common, uncommon, suggested and unsuitable.",
|
|
7
7
|
parameters: [DB.Param("Identifier")],
|
|
8
8
|
type: Identifier => DB.Object({
|
|
@@ -18,7 +18,7 @@ export const CommonnessRatedAdvantageDisadvantage = DB.GenTypeAlias(import.meta.
|
|
|
18
18
|
comment: "The options the commonness rating applies to.",
|
|
19
19
|
type: DB.Array(DB.IncludeIdentifier(CommonnessSelectOptionIdentifier), { minItems: 1 }),
|
|
20
20
|
}),
|
|
21
|
-
translations: NestedTranslationMap(DB.Optional, "
|
|
21
|
+
translations: NestedTranslationMap(DB.Optional, "SingleCommonnessRatedAdvantageDisadvantage", DB.Object({
|
|
22
22
|
options: DB.Optional({
|
|
23
23
|
comment: "The options the commonness rating applies to. This can be specified if plain options cannot exactly describe the options as written in the publication.",
|
|
24
24
|
type: DB.String({ minLength: 1 }),
|
|
@@ -47,3 +47,58 @@ const CommonnessRatedAdvantageDisadvantageLevel = DB.Enum(import.meta.url, {
|
|
|
47
47
|
}),
|
|
48
48
|
}),
|
|
49
49
|
});
|
|
50
|
+
const SingleCommonnessRatedAdvantageDisadvantageInGroup = DB.GenTypeAlias(import.meta.url, {
|
|
51
|
+
name: "SingleCommonnessRatedAdvantageDisadvantageInGroup",
|
|
52
|
+
comment: "Reference to a commonness-rated advantage or disadvantage. Commonness-rating terms used in the source books are strongly recommended, common, uncommon, suggested and unsuitable.",
|
|
53
|
+
parameters: [DB.Param("Identifier")],
|
|
54
|
+
type: Identifier => DB.Object({
|
|
55
|
+
id: DB.Required({
|
|
56
|
+
comment: "The advantage’s or disadvantage’s identifier.",
|
|
57
|
+
type: DB.TypeArgument(Identifier),
|
|
58
|
+
}),
|
|
59
|
+
level: DB.Optional({
|
|
60
|
+
comment: "The level of a commonness-rated advantage or disadvantage.",
|
|
61
|
+
type: DB.IncludeIdentifier(CommonnessRatedAdvantageDisadvantageLevel),
|
|
62
|
+
}),
|
|
63
|
+
options: DB.Optional({
|
|
64
|
+
comment: "The options the commonness rating applies to.",
|
|
65
|
+
type: DB.Array(DB.IncludeIdentifier(CommonnessSelectOptionIdentifier), { minItems: 1 }),
|
|
66
|
+
}),
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
const CommonnessRatedAdvantageDisadvantageGroup = DB.GenTypeAlias(import.meta.url, {
|
|
70
|
+
name: "CommonnessRatedAdvantageDisadvantageGroup",
|
|
71
|
+
comment: "Reference to a commonness-rated advantage or disadvantage. Commonness-rating terms used in the source books are strongly recommended, common, uncommon, suggested and unsuitable.",
|
|
72
|
+
parameters: [DB.Param("Identifier")],
|
|
73
|
+
type: Identifier => DB.Object({
|
|
74
|
+
list: DB.Required({
|
|
75
|
+
type: DB.Array(DB.GenIncludeIdentifier(SingleCommonnessRatedAdvantageDisadvantageInGroup, [
|
|
76
|
+
DB.TypeArgument(Identifier),
|
|
77
|
+
]), {
|
|
78
|
+
minItems: 2,
|
|
79
|
+
}),
|
|
80
|
+
}),
|
|
81
|
+
translations: NestedTranslationMap(DB.Required, "CommonnessRatedAdvantageDisadvantageGroup", DB.Object({
|
|
82
|
+
text: DB.Required({
|
|
83
|
+
comment: "The text replacing all entries in the group.",
|
|
84
|
+
type: DB.String({ minLength: 1, markdown: "inline" }),
|
|
85
|
+
}),
|
|
86
|
+
})),
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
export const CommonnessRatedAdvantageDisadvantage = DB.GenEnum(import.meta.url, {
|
|
90
|
+
name: "CommonnessRatedAdvantageDisadvantage",
|
|
91
|
+
parameters: [DB.Param("Identifier")],
|
|
92
|
+
values: Identifier => ({
|
|
93
|
+
Single: DB.EnumCase({
|
|
94
|
+
type: DB.GenIncludeIdentifier(SingleCommonnessRatedAdvantageDisadvantage, [
|
|
95
|
+
DB.TypeArgument(Identifier),
|
|
96
|
+
]),
|
|
97
|
+
}),
|
|
98
|
+
Group: DB.EnumCase({
|
|
99
|
+
type: DB.GenIncludeIdentifier(CommonnessRatedAdvantageDisadvantageGroup, [
|
|
100
|
+
DB.TypeArgument(Identifier),
|
|
101
|
+
]),
|
|
102
|
+
}),
|
|
103
|
+
}),
|
|
104
|
+
});
|
|
@@ -31,18 +31,30 @@ export declare const ItemComponent: DB.Entity<"ItemComponent", {
|
|
|
31
31
|
Factor: DB.EnumCase<DB.Float>;
|
|
32
32
|
DerivedFromOption: DB.EnumCase<null>;
|
|
33
33
|
}, []>>, true>;
|
|
34
|
+
weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, false>;
|
|
34
35
|
applicableItems: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableItems", {
|
|
35
36
|
MeleeWeapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableMeleeWeapons", DB.Object<{
|
|
36
37
|
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
37
|
-
combatTechniques: DB.MemberDecl<DB.Array<DB.
|
|
38
|
+
combatTechniques: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableMeleeCombatTechnique", DB.Object<{
|
|
39
|
+
combatTechnique: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
40
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"ApplicableMeleeCombatTechniqueTranslation", {
|
|
41
|
+
text: DB.MemberDecl<DB.String, true>;
|
|
42
|
+
}>, false>;
|
|
43
|
+
}>, []>>>, false>;
|
|
38
44
|
category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableMeleeWeaponCategory", {
|
|
39
45
|
HasMetalSurface: DB.EnumCase<null>;
|
|
40
46
|
HasMetalBladeOrTip: DB.EnumCase<null>;
|
|
47
|
+
HasWrappableHandle: DB.EnumCase<null>;
|
|
41
48
|
}, []>>, false>;
|
|
42
49
|
}>, []>>>;
|
|
43
50
|
RangedWeapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableRangedWeapons", DB.Object<{
|
|
44
51
|
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
45
|
-
combatTechniques: DB.MemberDecl<DB.Array<DB.
|
|
52
|
+
combatTechniques: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableRangedCombatTechnique", DB.Object<{
|
|
53
|
+
combatTechnique: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
54
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"ApplicableRangedCombatTechniqueTranslation", {
|
|
55
|
+
text: DB.MemberDecl<DB.String, true>;
|
|
56
|
+
}>, false>;
|
|
57
|
+
}>, []>>>, false>;
|
|
46
58
|
minimumReloadTime: DB.MemberDecl<DB.Integer, false>;
|
|
47
59
|
usesBullets: DB.MemberDecl<DB.Boolean, false>;
|
|
48
60
|
}>, []>>>;
|
|
@@ -4,7 +4,7 @@ import { CloseCombatTechnique, RangedCombatTechnique } from "../../CombatTechniq
|
|
|
4
4
|
import { NestedTranslationMap } from "../../Locale.js";
|
|
5
5
|
import { Errata } from "../../source/_Erratum.js";
|
|
6
6
|
import { src } from "../../source/_PublicationRef.js";
|
|
7
|
-
import { FixedCost } from "./_Item.js";
|
|
7
|
+
import { FixedCost, Weight } from "./_Item.js";
|
|
8
8
|
export const ItemComponent = DB.Entity(import.meta.url, {
|
|
9
9
|
name: "ItemComponent",
|
|
10
10
|
namePlural: "ItemComponents",
|
|
@@ -16,6 +16,10 @@ export const ItemComponent = DB.Entity(import.meta.url, {
|
|
|
16
16
|
comment: ItemComponentCost.comment,
|
|
17
17
|
type: DB.IncludeIdentifier(ItemComponentCost),
|
|
18
18
|
}),
|
|
19
|
+
weight: DB.Optional({
|
|
20
|
+
comment: "The weight in kg.",
|
|
21
|
+
type: DB.IncludeIdentifier(Weight),
|
|
22
|
+
}),
|
|
19
23
|
applicableItems: DB.Required({
|
|
20
24
|
comment: "The items the component can be applied to.",
|
|
21
25
|
type: DB.IncludeIdentifier(ApplicableItems),
|
|
@@ -116,12 +120,7 @@ const ItemComponentCostByCombatTechnique = DB.TypeAlias(import.meta.url, {
|
|
|
116
120
|
comment: "The cost in silverthalers for the close combat technique.",
|
|
117
121
|
type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
|
|
118
122
|
}),
|
|
119
|
-
translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByCloseCombatTechnique", DB.
|
|
120
|
-
label: DB.Required({
|
|
121
|
-
comment: "The label for cost, if different from the name of the combat technique.",
|
|
122
|
-
type: DB.String({ minLength: 1 }),
|
|
123
|
-
}),
|
|
124
|
-
})),
|
|
123
|
+
translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByCloseCombatTechnique", DB.IncludeIdentifier(ItemComponentCostByCombatTechniqueTranslation)),
|
|
125
124
|
}),
|
|
126
125
|
}),
|
|
127
126
|
}),
|
|
@@ -136,17 +135,21 @@ const ItemComponentCostByCombatTechnique = DB.TypeAlias(import.meta.url, {
|
|
|
136
135
|
comment: "The cost in silverthalers for the ranged combat technique.",
|
|
137
136
|
type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
|
|
138
137
|
}),
|
|
139
|
-
translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByRangedCombatTechnique", DB.
|
|
140
|
-
label: DB.Required({
|
|
141
|
-
comment: "The label for cost, if different from the name of the combat technique.",
|
|
142
|
-
type: DB.String({ minLength: 1 }),
|
|
143
|
-
}),
|
|
144
|
-
})),
|
|
138
|
+
translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByRangedCombatTechnique", DB.IncludeIdentifier(ItemComponentCostByCombatTechniqueTranslation)),
|
|
145
139
|
}),
|
|
146
140
|
}),
|
|
147
141
|
}),
|
|
148
142
|
}, { minProperties: 1 }),
|
|
149
143
|
});
|
|
144
|
+
const ItemComponentCostByCombatTechniqueTranslation = DB.TypeAlias(import.meta.url, {
|
|
145
|
+
name: "ItemComponentCostByCombatTechniqueTranslation",
|
|
146
|
+
type: () => DB.Object({
|
|
147
|
+
label: DB.Required({
|
|
148
|
+
comment: "The label for cost, if different from the name of the combat technique.",
|
|
149
|
+
type: DB.String({ minLength: 1 }),
|
|
150
|
+
}),
|
|
151
|
+
}),
|
|
152
|
+
});
|
|
150
153
|
const ApplicableItems = DB.Enum(import.meta.url, {
|
|
151
154
|
name: "ApplicableItems",
|
|
152
155
|
comment: "The items the component can be applied to.",
|
|
@@ -169,7 +172,7 @@ const ApplicableMeleeWeapons = DB.TypeAlias(import.meta.url, {
|
|
|
169
172
|
}),
|
|
170
173
|
combatTechniques: DB.Optional({
|
|
171
174
|
comment: "Weapons of combat techniques this component can be applied to.",
|
|
172
|
-
type: DB.Array(
|
|
175
|
+
type: DB.Array(DB.IncludeIdentifier(ApplicableMeleeCombatTechnique), {
|
|
173
176
|
minItems: 1,
|
|
174
177
|
uniqueItems: true,
|
|
175
178
|
}),
|
|
@@ -180,11 +183,27 @@ const ApplicableMeleeWeapons = DB.TypeAlias(import.meta.url, {
|
|
|
180
183
|
}),
|
|
181
184
|
}, { minProperties: 1 }),
|
|
182
185
|
});
|
|
186
|
+
const ApplicableMeleeCombatTechnique = DB.TypeAlias(import.meta.url, {
|
|
187
|
+
name: "ApplicableMeleeCombatTechnique",
|
|
188
|
+
type: () => DB.Object({
|
|
189
|
+
combatTechnique: DB.Required({
|
|
190
|
+
comment: "The combat technique this component can be applied to.",
|
|
191
|
+
type: CloseCombatTechniqueIdentifier(),
|
|
192
|
+
}),
|
|
193
|
+
translations: NestedTranslationMap(DB.Optional, "ApplicableMeleeCombatTechnique", DB.Object({
|
|
194
|
+
text: DB.Required({
|
|
195
|
+
comment: "The name that should be displayed if the name of combat technique should not be used.",
|
|
196
|
+
type: DB.String({ minLength: 1 }),
|
|
197
|
+
}),
|
|
198
|
+
})),
|
|
199
|
+
}),
|
|
200
|
+
});
|
|
183
201
|
const ApplicableMeleeWeaponCategory = DB.Enum(import.meta.url, {
|
|
184
202
|
name: "ApplicableMeleeWeaponCategory",
|
|
185
203
|
values: () => ({
|
|
186
204
|
HasMetalSurface: DB.EnumCase({ type: null }),
|
|
187
205
|
HasMetalBladeOrTip: DB.EnumCase({ type: null }),
|
|
206
|
+
HasWrappableHandle: DB.EnumCase({ type: null }),
|
|
188
207
|
}),
|
|
189
208
|
});
|
|
190
209
|
const ApplicableRangedWeapons = DB.TypeAlias(import.meta.url, {
|
|
@@ -199,7 +218,7 @@ const ApplicableRangedWeapons = DB.TypeAlias(import.meta.url, {
|
|
|
199
218
|
}),
|
|
200
219
|
combatTechniques: DB.Optional({
|
|
201
220
|
comment: "Weapons of combat techniques this component can be applied to.",
|
|
202
|
-
type: DB.Array(
|
|
221
|
+
type: DB.Array(DB.IncludeIdentifier(ApplicableRangedCombatTechnique), {
|
|
203
222
|
minItems: 1,
|
|
204
223
|
uniqueItems: true,
|
|
205
224
|
}),
|
|
@@ -214,6 +233,21 @@ const ApplicableRangedWeapons = DB.TypeAlias(import.meta.url, {
|
|
|
214
233
|
}),
|
|
215
234
|
}, { minProperties: 1 }),
|
|
216
235
|
});
|
|
236
|
+
const ApplicableRangedCombatTechnique = DB.TypeAlias(import.meta.url, {
|
|
237
|
+
name: "ApplicableRangedCombatTechnique",
|
|
238
|
+
type: () => DB.Object({
|
|
239
|
+
combatTechnique: DB.Required({
|
|
240
|
+
comment: "The combat technique this component can be applied to.",
|
|
241
|
+
type: RangedCombatTechniqueIdentifier(),
|
|
242
|
+
}),
|
|
243
|
+
translations: NestedTranslationMap(DB.Optional, "ApplicableRangedCombatTechnique", DB.Object({
|
|
244
|
+
text: DB.Required({
|
|
245
|
+
comment: "The name that should be displayed if the name of combat technique should not be used.",
|
|
246
|
+
type: DB.String({ minLength: 1 }),
|
|
247
|
+
}),
|
|
248
|
+
})),
|
|
249
|
+
}),
|
|
250
|
+
});
|
|
217
251
|
const ApplicableAmmunition = DB.TypeAlias(import.meta.url, {
|
|
218
252
|
name: "ApplicableAmmunition",
|
|
219
253
|
type: () => DB.Object({
|
|
@@ -762,6 +762,25 @@ export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisit
|
|
|
762
762
|
}>, []>>>;
|
|
763
763
|
}, []>>, false>;
|
|
764
764
|
}>, []>>>;
|
|
765
|
+
Rule: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RulePrerequisite", DB.Object<{
|
|
766
|
+
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ExtensionRuleIdentifier", {
|
|
767
|
+
FocusRule: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
768
|
+
OptionalRule: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
769
|
+
}, []>>, true>;
|
|
770
|
+
active: DB.MemberDecl<DB.Boolean, true>;
|
|
771
|
+
display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
|
|
772
|
+
Hide: DB.EnumCase<null>;
|
|
773
|
+
ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
|
|
774
|
+
sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
|
|
775
|
+
Standalone: DB.EnumCase<null>;
|
|
776
|
+
Connected: DB.EnumCase<null>;
|
|
777
|
+
}, []>>, false>;
|
|
778
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
|
|
779
|
+
replacement: DB.MemberDecl<DB.String, true>;
|
|
780
|
+
}>, true>;
|
|
781
|
+
}>, []>>>;
|
|
782
|
+
}, []>>, false>;
|
|
783
|
+
}>, []>>>;
|
|
765
784
|
Activatable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatablePrerequisite", DB.Object<{
|
|
766
785
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableIdentifier", {
|
|
767
786
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -89,6 +89,7 @@ export const ProfessionPrerequisiteGroup = DB.Enum(import.meta.url, {
|
|
|
89
89
|
Sex: DB.EnumCase({ type: DB.IncludeIdentifier(SexPrerequisite) }),
|
|
90
90
|
Race: DB.EnumCase({ type: DB.IncludeIdentifier(RacePrerequisite) }),
|
|
91
91
|
Culture: DB.EnumCase({ type: DB.IncludeIdentifier(CulturePrerequisite) }),
|
|
92
|
+
Rule: DB.EnumCase({ type: DB.IncludeIdentifier(RulePrerequisite) }),
|
|
92
93
|
Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }),
|
|
93
94
|
Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }),
|
|
94
95
|
RatedMinimumNumber: DB.EnumCase({
|
|
@@ -1268,11 +1268,11 @@ export declare const AdvancedCombatSpecialAbility: DB.Entity<"AdvancedCombatSpec
|
|
|
1268
1268
|
race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
1269
1269
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1270
1270
|
hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
|
|
1271
|
+
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1271
1272
|
}>, []>>, false>;
|
|
1272
|
-
|
|
1273
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
|
|
1273
1274
|
restrictions: DB.MemberDecl<DB.String, true>;
|
|
1274
1275
|
}>, false>;
|
|
1275
|
-
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1276
1276
|
}>, []>>>, true>;
|
|
1277
1277
|
}>, []>>>;
|
|
1278
1278
|
}, []>>, true>;
|
|
@@ -1158,11 +1158,11 @@ export declare const BrawlingSpecialAbility: DB.Entity<"BrawlingSpecialAbility",
|
|
|
1158
1158
|
race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
1159
1159
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1160
1160
|
hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
|
|
1161
|
+
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1161
1162
|
}>, []>>, false>;
|
|
1162
|
-
|
|
1163
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
|
|
1163
1164
|
restrictions: DB.MemberDecl<DB.String, true>;
|
|
1164
1165
|
}>, false>;
|
|
1165
|
-
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1166
1166
|
}>, []>>>, true>;
|
|
1167
1167
|
}>, []>>>;
|
|
1168
1168
|
}, []>>, true>;
|
|
@@ -1264,11 +1264,11 @@ export declare const CombatSpecialAbility: DB.Entity<"CombatSpecialAbility", {
|
|
|
1264
1264
|
race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
1265
1265
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1266
1266
|
hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
|
|
1267
|
+
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1267
1268
|
}>, []>>, false>;
|
|
1268
|
-
|
|
1269
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
|
|
1269
1270
|
restrictions: DB.MemberDecl<DB.String, true>;
|
|
1270
1271
|
}>, false>;
|
|
1271
|
-
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1272
1272
|
}>, []>>>, true>;
|
|
1273
1273
|
}>, []>>>;
|
|
1274
1274
|
}, []>>, true>;
|
|
@@ -1345,11 +1345,11 @@ export declare const CombatStyleSpecialAbility: DB.Entity<"CombatStyleSpecialAbi
|
|
|
1345
1345
|
race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
1346
1346
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1347
1347
|
hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
|
|
1348
|
+
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1348
1349
|
}>, []>>, false>;
|
|
1349
|
-
|
|
1350
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
|
|
1350
1351
|
restrictions: DB.MemberDecl<DB.String, true>;
|
|
1351
1352
|
}>, false>;
|
|
1352
|
-
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1353
1353
|
}>, []>>>, true>;
|
|
1354
1354
|
}>, []>>>;
|
|
1355
1355
|
}, []>>, true>;
|
|
@@ -1158,11 +1158,11 @@ export declare const CommandSpecialAbility: DB.Entity<"CommandSpecialAbility", {
|
|
|
1158
1158
|
race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
1159
1159
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1160
1160
|
hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
|
|
1161
|
+
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1161
1162
|
}>, []>>, false>;
|
|
1162
|
-
|
|
1163
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
|
|
1163
1164
|
restrictions: DB.MemberDecl<DB.String, true>;
|
|
1164
1165
|
}>, false>;
|
|
1165
|
-
weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1166
1166
|
}>, []>>>, true>;
|
|
1167
1167
|
}>, []>>>;
|
|
1168
1168
|
}, []>>, true>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optolith/database-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.102.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",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"license": "MPL-2.0",
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@elyukai/utils": "^0.3.6",
|
|
42
|
-
"tsondb": "^0.21.
|
|
42
|
+
"tsondb": "^0.21.10"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@elyukai/oxc-config": "^0.1.0",
|