@optolith/database-schema 0.81.0 → 0.83.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 +69 -20
- package/lib/types/AnimalDisease.d.ts +2 -0
- package/lib/types/Disease.d.ts +2 -0
- package/lib/types/Locale.d.ts +1 -0
- package/lib/types/Locale.js +1 -0
- package/lib/types/Talisman.d.ts +13 -6
- package/lib/types/Talisman.js +50 -23
- package/lib/types/_DiseasePoison.d.ts +3 -0
- package/lib/types/_DiseasePoison.js +4 -0
- package/lib/types/equipment/item/Plant.d.ts +1 -0
- package/lib/types/equipment/item/Plant.js +1 -0
- package/lib/types/equipment/item/Poison.d.ts +3 -0
- package/lib/types/equipment/item/Poison.js +1 -0
- package/lib/types/equipment/item/sub/BotanicRegion.js +4 -0
- package/lib/types/equipment/item/sub/SubBiome.js +13 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,34 @@
|
|
|
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.83.0](https://github.com/Optolith/database-schema/compare/v0.82.0...v0.83.0) (2026-10-06)
|
|
6
|
+
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
* different duration translation for diseases
|
|
10
|
+
* various plant schema improvements
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* additional text for reduceable effects ([71743e8](https://github.com/Optolith/database-schema/commit/71743e82039d7aa0523c7ded646ad8d3f145ceed))
|
|
15
|
+
* various plant schema improvements ([c4cb673](https://github.com/Optolith/database-schema/commit/c4cb673685d2ae817ae5705d6b8625d7e80cc60f))
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* different duration translation for diseases ([ef682b2](https://github.com/Optolith/database-schema/commit/ef682b28fe358b13f69250ec09c5607154754b3b))
|
|
20
|
+
|
|
21
|
+
## [0.82.0](https://github.com/Optolith/database-schema/compare/v0.81.0...v0.82.0) (2026-10-06)
|
|
22
|
+
|
|
23
|
+
### ⚠ BREAKING CHANGES
|
|
24
|
+
|
|
25
|
+
* allow more weapon values for talismans
|
|
26
|
+
* allow multiple different talisman activation cost
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
* allow more weapon values for talismans ([b109d0f](https://github.com/Optolith/database-schema/commit/b109d0f90f9f9cdfa0f8e33cbacde44b2a8563ee))
|
|
31
|
+
* allow multiple different talisman activation cost ([89e5d14](https://github.com/Optolith/database-schema/commit/89e5d14d2faefac220ad43765de0cba1359ece9e))
|
|
32
|
+
|
|
5
33
|
## [0.81.0](https://github.com/Optolith/database-schema/compare/v0.80.0...v0.81.0) (2026-10-06)
|
|
6
34
|
|
|
7
35
|
### ⚠ BREAKING CHANGES
|
package/gen/types.d.ts
CHANGED
|
@@ -964,6 +964,7 @@ export type TypeAliasMap = {
|
|
|
964
964
|
TalismanActivationCost: TalismanActivationCost
|
|
965
965
|
TalismanActivationDuration: TalismanActivationDuration
|
|
966
966
|
TalismanActivationDurationExpression: TalismanActivationDurationExpression
|
|
967
|
+
TalismanCombatUse: TalismanCombatUse
|
|
967
968
|
TalismanDamage: TalismanDamage
|
|
968
969
|
TalismanMeleeWeapon: TalismanMeleeWeapon
|
|
969
970
|
TalismanRangedWeapon: TalismanRangedWeapon
|
|
@@ -2745,6 +2746,7 @@ export interface Locale {
|
|
|
2745
2746
|
"Progress": string
|
|
2746
2747
|
"Incubation Time": string
|
|
2747
2748
|
"Damage": string
|
|
2749
|
+
"Duration (Disease)": string
|
|
2748
2750
|
"Causes": string
|
|
2749
2751
|
"Treatment": string
|
|
2750
2752
|
"Antidote": string
|
|
@@ -5846,6 +5848,11 @@ export interface Reduceable<Content> {
|
|
|
5846
5848
|
* The reduced value. In the source, it's the text after the slash. Some entries may not have a reduced value, i.e. there is no slash with text after it. If the text after the slash is a dash, include it here as well.
|
|
5847
5849
|
*/
|
|
5848
5850
|
reduced?: Content
|
|
5851
|
+
|
|
5852
|
+
/**
|
|
5853
|
+
* An additional text that applies regardless of the effect being reduced or not.
|
|
5854
|
+
*/
|
|
5855
|
+
additonal?: string
|
|
5849
5856
|
}
|
|
5850
5857
|
|
|
5851
5858
|
export interface Poison {
|
|
@@ -6382,6 +6389,9 @@ export type ExpressionBasedPoisonTimeExpressionValue =
|
|
|
6382
6389
|
| {
|
|
6383
6390
|
kind: "CircleOfDamnation"
|
|
6384
6391
|
}
|
|
6392
|
+
| {
|
|
6393
|
+
kind: "QualityLevels"
|
|
6394
|
+
}
|
|
6385
6395
|
|
|
6386
6396
|
export type PoisonTimeUnit =
|
|
6387
6397
|
| {
|
|
@@ -26798,6 +26808,9 @@ export interface PlantOccurrenceTranslation {
|
|
|
26798
26808
|
}
|
|
26799
26809
|
|
|
26800
26810
|
export type PlantOccurrenceTier =
|
|
26811
|
+
| {
|
|
26812
|
+
kind: "AllBiomes"
|
|
26813
|
+
}
|
|
26801
26814
|
| {
|
|
26802
26815
|
kind: "Biomes"
|
|
26803
26816
|
Biomes: Biome_ID[]
|
|
@@ -27496,21 +27509,7 @@ export interface Talisman {
|
|
|
27496
27509
|
*/
|
|
27497
27510
|
ap_value?: number
|
|
27498
27511
|
|
|
27499
|
-
combatUse?:
|
|
27500
|
-
/**
|
|
27501
|
-
* A list of stat blocks for each close combat technique this talisman can be used with.
|
|
27502
|
-
*/
|
|
27503
|
-
melee_uses?: {
|
|
27504
|
-
[closeCombatTechniqueId: string]: MeleeTalismanUse
|
|
27505
|
-
}
|
|
27506
|
-
|
|
27507
|
-
/**
|
|
27508
|
-
* A list of stat blocks for each ranged combat technique this talisman can be used with.
|
|
27509
|
-
*/
|
|
27510
|
-
ranged_uses?: {
|
|
27511
|
-
[rangedCombatTechniqueId: string]: RangedTalismanUse
|
|
27512
|
-
}
|
|
27513
|
-
}
|
|
27512
|
+
combatUse?: TalismanCombatUse
|
|
27514
27513
|
|
|
27515
27514
|
/**
|
|
27516
27515
|
* References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
|
|
@@ -27530,10 +27529,6 @@ export interface Talisman {
|
|
|
27530
27529
|
*/
|
|
27531
27530
|
export type Talisman_ID = string
|
|
27532
27531
|
|
|
27533
|
-
export type MeleeTalismanUse = TalismanMeleeWeapon
|
|
27534
|
-
|
|
27535
|
-
export type RangedTalismanUse = TalismanRangedWeapon
|
|
27536
|
-
|
|
27537
27532
|
export interface TalismanTranslation {
|
|
27538
27533
|
/**
|
|
27539
27534
|
* The talisman’s name.
|
|
@@ -27569,7 +27564,7 @@ export interface TalismanActivation {
|
|
|
27569
27564
|
/**
|
|
27570
27565
|
* The cost to activate the talisman.
|
|
27571
27566
|
*/
|
|
27572
|
-
cost: TalismanActivationCost
|
|
27567
|
+
cost: TalismanActivationCost[]
|
|
27573
27568
|
|
|
27574
27569
|
/**
|
|
27575
27570
|
* The duration of how long the talisman will be active.
|
|
@@ -27612,6 +27607,60 @@ export type TalismanActivationDurationExpressionValue =
|
|
|
27612
27607
|
kind: "QualityLevels"
|
|
27613
27608
|
}
|
|
27614
27609
|
|
|
27610
|
+
export interface TalismanCombatUse {
|
|
27611
|
+
/**
|
|
27612
|
+
* The weight in kg.
|
|
27613
|
+
*/
|
|
27614
|
+
weight: Weight
|
|
27615
|
+
|
|
27616
|
+
/**
|
|
27617
|
+
* A list of stat blocks for each close combat technique this talisman can be used with.
|
|
27618
|
+
*/
|
|
27619
|
+
meleeUses?: {
|
|
27620
|
+
[closeCombatTechniqueId: string]: MeleeTalismanUse
|
|
27621
|
+
}
|
|
27622
|
+
|
|
27623
|
+
/**
|
|
27624
|
+
* A list of stat blocks for each ranged combat technique this talisman can be used with.
|
|
27625
|
+
*/
|
|
27626
|
+
rangedUses?: {
|
|
27627
|
+
[rangedCombatTechniqueId: string]: RangedTalismanUse
|
|
27628
|
+
}
|
|
27629
|
+
|
|
27630
|
+
/**
|
|
27631
|
+
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
27632
|
+
*/
|
|
27633
|
+
translations?: {
|
|
27634
|
+
[localeId: string]: TalismanCombatUseTranslation
|
|
27635
|
+
}
|
|
27636
|
+
}
|
|
27637
|
+
|
|
27638
|
+
export type MeleeTalismanUse = TalismanMeleeWeapon
|
|
27639
|
+
|
|
27640
|
+
export type RangedTalismanUse = TalismanRangedWeapon
|
|
27641
|
+
|
|
27642
|
+
export interface TalismanCombatUseTranslation {
|
|
27643
|
+
/**
|
|
27644
|
+
* Note text.
|
|
27645
|
+
*/
|
|
27646
|
+
note?: string
|
|
27647
|
+
|
|
27648
|
+
/**
|
|
27649
|
+
* Special rules text.
|
|
27650
|
+
*/
|
|
27651
|
+
rules?: string
|
|
27652
|
+
|
|
27653
|
+
/**
|
|
27654
|
+
* The weapon advantage text.
|
|
27655
|
+
*/
|
|
27656
|
+
advantage?: string
|
|
27657
|
+
|
|
27658
|
+
/**
|
|
27659
|
+
* The weapon disadvantage text.
|
|
27660
|
+
*/
|
|
27661
|
+
disadvantage?: string
|
|
27662
|
+
}
|
|
27663
|
+
|
|
27615
27664
|
export type TalismanMeleeWeapon = GenMeleeWeapon<TalismanDamage>
|
|
27616
27665
|
|
|
27617
27666
|
export type TalismanDamage = MathOperation<TalismanDamageOption>
|
|
@@ -79,10 +79,12 @@ export declare const AnimalDisease: DB.Entity<"AnimalDisease", {
|
|
|
79
79
|
damage: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
80
80
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
81
81
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
82
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
82
83
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
83
84
|
duration: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
84
85
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
85
86
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
87
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
86
88
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
87
89
|
special: DB.MemberDecl<DB.String, false>;
|
|
88
90
|
treatment: DB.MemberDecl<DB.String, true>;
|
package/lib/types/Disease.d.ts
CHANGED
|
@@ -141,10 +141,12 @@ export declare const Disease: DB.Entity<"Disease", {
|
|
|
141
141
|
damage: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
142
142
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
143
143
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
144
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
144
145
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
145
146
|
duration: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
146
147
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
147
148
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
149
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
148
150
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
149
151
|
special: DB.MemberDecl<DB.String, false>;
|
|
150
152
|
treatment: DB.MemberDecl<DB.String, true>;
|
package/lib/types/Locale.d.ts
CHANGED
package/lib/types/Locale.js
CHANGED
package/lib/types/Talisman.d.ts
CHANGED
|
@@ -10,10 +10,10 @@ export declare const Talisman: DB.Entity<"Talisman", {
|
|
|
10
10
|
PowerfulTalisman: DB.EnumCase<null>;
|
|
11
11
|
}, []>>, false>;
|
|
12
12
|
activation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivation", DB.Object<{
|
|
13
|
-
cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationCost", DB.Object<{
|
|
13
|
+
cost: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationCost", DB.Object<{
|
|
14
14
|
value: DB.MemberDecl<DB.Integer, true>;
|
|
15
15
|
unit: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
16
|
-
}>, []
|
|
16
|
+
}>, []>>>, true>;
|
|
17
17
|
duration: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationDuration", DB.Object<{
|
|
18
18
|
value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationDurationExpression", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>>, true>;
|
|
19
19
|
unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
|
|
@@ -42,8 +42,9 @@ export declare const Talisman: DB.Entity<"Talisman", {
|
|
|
42
42
|
}>, []>>, true>;
|
|
43
43
|
}>, []>>, false>;
|
|
44
44
|
ap_value: DB.MemberDecl<DB.Integer, false>;
|
|
45
|
-
combatUse: DB.MemberDecl<DB.Object<{
|
|
46
|
-
|
|
45
|
+
combatUse: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanCombatUse", DB.Object<{
|
|
46
|
+
weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, true>;
|
|
47
|
+
meleeUses: DB.MemberDecl<DB.NestedEntityMap<string, {
|
|
47
48
|
damage: DB.MemberDecl<DB.TypeArgument<DB.Param<"Damage", DB.Type>>, true>;
|
|
48
49
|
damage_threshold: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"PrimaryAttributeDamageThreshold", {
|
|
49
50
|
Default: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DefaultPrimaryAttributeDamageThreshold", DB.Object<{
|
|
@@ -71,7 +72,7 @@ export declare const Talisman: DB.Entity<"Talisman", {
|
|
|
71
72
|
is_two_handed_weapon: DB.MemberDecl<DB.Boolean, true>;
|
|
72
73
|
is_improvised_weapon: DB.MemberDecl<DB.Boolean, true>;
|
|
73
74
|
}>, false>;
|
|
74
|
-
|
|
75
|
+
rangedUses: DB.MemberDecl<DB.NestedEntityMap<string, {
|
|
75
76
|
damage: DB.MemberDecl<DB.TypeArgument<DB.Param<"Damage", DB.Type>>, true>;
|
|
76
77
|
reload_time: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ReloadTime", DB.Object<{
|
|
77
78
|
value: DB.MemberDecl<DB.Integer, true>;
|
|
@@ -88,7 +89,13 @@ export declare const Talisman: DB.Entity<"Talisman", {
|
|
|
88
89
|
length: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Length", DB.Integer, []>>, false>;
|
|
89
90
|
is_improvised_weapon: DB.MemberDecl<DB.Boolean, true>;
|
|
90
91
|
}>, false>;
|
|
91
|
-
|
|
92
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"TalismanCombatUseTranslation", {
|
|
93
|
+
note: DB.MemberDecl<DB.String, false>;
|
|
94
|
+
rules: DB.MemberDecl<DB.String, false>;
|
|
95
|
+
advantage: DB.MemberDecl<DB.String, false>;
|
|
96
|
+
disadvantage: DB.MemberDecl<DB.String, false>;
|
|
97
|
+
}>, false>;
|
|
98
|
+
}>, []>>, false>;
|
|
92
99
|
src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
|
|
93
100
|
id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
94
101
|
occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
|
package/lib/types/Talisman.js
CHANGED
|
@@ -4,6 +4,7 @@ import { Dice } from "./_Dice.js";
|
|
|
4
4
|
import { BlessedTraditionIdentifier, DerivedCharacteristicIdentifier } from "./_Identifier.js";
|
|
5
5
|
import { MathOperation } from "./_MathExpression.js";
|
|
6
6
|
import { CloseCombatTechnique, RangedCombatTechnique } from "./CombatTechnique.js";
|
|
7
|
+
import { Weight } from "./equipment/item/_Item.js";
|
|
7
8
|
import { GenMeleeWeapon } from "./equipment/item/_MeleeWeapon.js";
|
|
8
9
|
import { GenRangedWeapon } from "./equipment/item/_RangedWeapon.js";
|
|
9
10
|
import { checkWeaponCombatTechniqueIntegrity } from "./equipment/item/_Weapon.js";
|
|
@@ -31,28 +32,7 @@ export const Talisman = DB.Entity(import.meta.url, {
|
|
|
31
32
|
type: DB.Integer({ minimum: 5, multipleOf: 5 }),
|
|
32
33
|
}),
|
|
33
34
|
combatUse: DB.Optional({
|
|
34
|
-
type: DB.
|
|
35
|
-
melee_uses: DB.Optional({
|
|
36
|
-
comment: "A list of stat blocks for each close combat technique this talisman can be used with.",
|
|
37
|
-
type: DB.NestedEntityMap({
|
|
38
|
-
name: "MeleeTalismanUse",
|
|
39
|
-
namePlural: "MeleeTalismanUses",
|
|
40
|
-
secondaryEntity: CloseCombatTechnique,
|
|
41
|
-
type: DB.IncludeIdentifier(TalismanMeleeWeapon),
|
|
42
|
-
minProperties: 1,
|
|
43
|
-
}),
|
|
44
|
-
}),
|
|
45
|
-
ranged_uses: DB.Optional({
|
|
46
|
-
comment: "A list of stat blocks for each ranged combat technique this talisman can be used with.",
|
|
47
|
-
type: DB.NestedEntityMap({
|
|
48
|
-
name: "RangedTalismanUse",
|
|
49
|
-
namePlural: "RangedTalismanUses",
|
|
50
|
-
secondaryEntity: RangedCombatTechnique,
|
|
51
|
-
type: DB.IncludeIdentifier(TalismanRangedWeapon),
|
|
52
|
-
minProperties: 1,
|
|
53
|
-
}),
|
|
54
|
-
}),
|
|
55
|
-
}, { minProperties: 1 }),
|
|
35
|
+
type: DB.IncludeIdentifier(TalismanCombatUse),
|
|
56
36
|
}),
|
|
57
37
|
src,
|
|
58
38
|
translations: NestedTranslationMap(DB.Required, "Talisman", DB.Object({
|
|
@@ -84,6 +64,53 @@ export const Talisman = DB.Entity(import.meta.url, {
|
|
|
84
64
|
})
|
|
85
65
|
: [],
|
|
86
66
|
});
|
|
67
|
+
const TalismanCombatUse = DB.TypeAlias(import.meta.url, {
|
|
68
|
+
name: "TalismanCombatUse",
|
|
69
|
+
type: () => DB.Object({
|
|
70
|
+
weight: DB.Required({
|
|
71
|
+
comment: "The weight in kg.",
|
|
72
|
+
type: DB.IncludeIdentifier(Weight),
|
|
73
|
+
}),
|
|
74
|
+
meleeUses: DB.Optional({
|
|
75
|
+
comment: "A list of stat blocks for each close combat technique this talisman can be used with.",
|
|
76
|
+
type: DB.NestedEntityMap({
|
|
77
|
+
name: "MeleeTalismanUse",
|
|
78
|
+
namePlural: "MeleeTalismanUses",
|
|
79
|
+
secondaryEntity: CloseCombatTechnique,
|
|
80
|
+
type: DB.IncludeIdentifier(TalismanMeleeWeapon),
|
|
81
|
+
minProperties: 1,
|
|
82
|
+
}),
|
|
83
|
+
}),
|
|
84
|
+
rangedUses: DB.Optional({
|
|
85
|
+
comment: "A list of stat blocks for each ranged combat technique this talisman can be used with.",
|
|
86
|
+
type: DB.NestedEntityMap({
|
|
87
|
+
name: "RangedTalismanUse",
|
|
88
|
+
namePlural: "RangedTalismanUses",
|
|
89
|
+
secondaryEntity: RangedCombatTechnique,
|
|
90
|
+
type: DB.IncludeIdentifier(TalismanRangedWeapon),
|
|
91
|
+
minProperties: 1,
|
|
92
|
+
}),
|
|
93
|
+
}),
|
|
94
|
+
translations: NestedTranslationMap(DB.Optional, "TalismanCombatUse", DB.Object({
|
|
95
|
+
note: DB.Optional({
|
|
96
|
+
comment: "Note text.",
|
|
97
|
+
type: DB.String({ minLength: 1, markdown: "block" }),
|
|
98
|
+
}),
|
|
99
|
+
rules: DB.Optional({
|
|
100
|
+
comment: "Special rules text.",
|
|
101
|
+
type: DB.String({ minLength: 1, markdown: "block" }),
|
|
102
|
+
}),
|
|
103
|
+
advantage: DB.Optional({
|
|
104
|
+
comment: "The weapon advantage text.",
|
|
105
|
+
type: DB.String({ minLength: 1, markdown: "block" }),
|
|
106
|
+
}),
|
|
107
|
+
disadvantage: DB.Optional({
|
|
108
|
+
comment: "The weapon disadvantage text.",
|
|
109
|
+
type: DB.String({ minLength: 1, markdown: "block" }),
|
|
110
|
+
}),
|
|
111
|
+
}, { minProperties: 1 })),
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
87
114
|
const TalismanMeleeWeapon = DB.TypeAlias(import.meta.url, {
|
|
88
115
|
name: "TalismanMeleeWeapon",
|
|
89
116
|
type: () => DB.GenIncludeIdentifier(GenMeleeWeapon, [DB.IncludeIdentifier(TalismanDamage)]),
|
|
@@ -119,7 +146,7 @@ const TalismanActivation = DB.TypeAlias(import.meta.url, {
|
|
|
119
146
|
type: () => DB.Object({
|
|
120
147
|
cost: DB.Required({
|
|
121
148
|
comment: "The cost to activate the talisman.",
|
|
122
|
-
type: DB.IncludeIdentifier(TalismanActivationCost),
|
|
149
|
+
type: DB.Array(DB.IncludeIdentifier(TalismanActivationCost), { minItems: 1 }),
|
|
123
150
|
}),
|
|
124
151
|
duration: DB.Required({
|
|
125
152
|
comment: "The duration of how long the talisman will be active.",
|
|
@@ -38,6 +38,7 @@ export declare const cause: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.T
|
|
|
38
38
|
export declare const Reduceable: DB.TypeAlias<"Reduceable", DB.Object<{
|
|
39
39
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
40
40
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
41
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
41
42
|
}>, [Content: DB.Param<"Content", DB.Type>]>;
|
|
42
43
|
export declare const DiseaseTranslation: DB.Object<{
|
|
43
44
|
name: DB.MemberDecl<DB.String, true>;
|
|
@@ -51,10 +52,12 @@ export declare const DiseaseTranslation: DB.Object<{
|
|
|
51
52
|
damage: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
52
53
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
53
54
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
55
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
54
56
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
55
57
|
duration: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
56
58
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
57
59
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
60
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
58
61
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
59
62
|
special: DB.MemberDecl<DB.String, false>;
|
|
60
63
|
treatment: DB.MemberDecl<DB.String, true>;
|
|
@@ -100,6 +100,10 @@ This streamlines the wording for diseases and poison by using a unified wording
|
|
|
100
100
|
comment: "The reduced value. In the source, it's the text after the slash. Some entries may not have a reduced value, i.e. there is no slash with text after it. If the text after the slash is a dash, include it here as well.",
|
|
101
101
|
type: DB.TypeArgument(Content),
|
|
102
102
|
}),
|
|
103
|
+
additonal: DB.Optional({
|
|
104
|
+
comment: "An additional text that applies regardless of the effect being reduced or not.",
|
|
105
|
+
type: DB.String({ minLength: 1, markdown: "inline" }),
|
|
106
|
+
}),
|
|
103
107
|
}),
|
|
104
108
|
});
|
|
105
109
|
export const DiseaseTranslation = DB.Object({
|
|
@@ -12,6 +12,7 @@ export declare const Plant: DB.Entity<"Plant", {
|
|
|
12
12
|
occurences: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PlantOccurences", DB.Object<{
|
|
13
13
|
items: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PlantOccurrence", DB.Object<{
|
|
14
14
|
regions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"PlantOccurrenceTier", {
|
|
15
|
+
AllBiomes: DB.EnumCase<null>;
|
|
15
16
|
Biomes: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
|
|
16
17
|
SubBiomes: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
|
|
17
18
|
BotanicRegions: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
|
|
@@ -123,6 +123,7 @@ const PlantOccurrence = DB.TypeAlias(import.meta.url, {
|
|
|
123
123
|
const PlantOccurrenceTier = DB.Enum(import.meta.url, {
|
|
124
124
|
name: "PlantOccurrenceTier",
|
|
125
125
|
values: () => ({
|
|
126
|
+
AllBiomes: DB.EnumCase({ type: null }),
|
|
126
127
|
Biomes: DB.EnumCase({
|
|
127
128
|
type: DB.Array(BiomeIdentifier(), { minItems: 1 }),
|
|
128
129
|
}),
|
|
@@ -316,6 +316,7 @@ export declare const Poison: DB.Entity<"Poison", {
|
|
|
316
316
|
duration: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
317
317
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
318
318
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
319
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
319
320
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
320
321
|
value: DB.MemberDecl<DB.Integer, false>;
|
|
321
322
|
cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"PoisonCost", {
|
|
@@ -394,6 +395,7 @@ export declare const Poison: DB.Entity<"Poison", {
|
|
|
394
395
|
effect: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"Reduceable", DB.Object<{
|
|
395
396
|
default: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, true>;
|
|
396
397
|
reduced: DB.MemberDecl<DB.TypeArgument<DB.Param<"Content", DB.Type>>, false>;
|
|
398
|
+
additonal: DB.MemberDecl<DB.String, false>;
|
|
397
399
|
}>, [Content: DB.Param<"Content", DB.Type>]>>, true>;
|
|
398
400
|
notes: DB.MemberDecl<DB.String, false>;
|
|
399
401
|
errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
|
|
@@ -429,6 +431,7 @@ export declare const ExpressionBasedPoisonTimeExpressionValue: DB.Enum<"Expressi
|
|
|
429
431
|
sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
|
|
430
432
|
}>, []>>>;
|
|
431
433
|
CircleOfDamnation: DB.EnumCase<null>;
|
|
434
|
+
QualityLevels: DB.EnumCase<null>;
|
|
432
435
|
}, []>;
|
|
433
436
|
export declare const IndefinitePoisonTime: DB.TypeAlias<"IndefinitePoisonTime", DB.Object<{
|
|
434
437
|
translations: DB.MemberDecl<DB.NestedEntityMap<"IndefinitePoisonTimeTranslation", {
|
|
@@ -175,6 +175,7 @@ export const ExpressionBasedPoisonTimeExpressionValue = DB.Enum(import.meta.url,
|
|
|
175
175
|
Constant: DB.EnumCase({ type: DB.Integer({ minimum: 1 }) }),
|
|
176
176
|
Dice: DB.EnumCase({ type: DB.IncludeIdentifier(Dice) }),
|
|
177
177
|
CircleOfDamnation: DB.EnumCase({ type: null }),
|
|
178
|
+
QualityLevels: DB.EnumCase({ type: null }),
|
|
178
179
|
}),
|
|
179
180
|
});
|
|
180
181
|
const PoisonTimeUnit = DB.Enum(import.meta.url, {
|
|
@@ -18,6 +18,10 @@ export const BotanicRegion = DB.Entity(import.meta.url, {
|
|
|
18
18
|
}),
|
|
19
19
|
parentReferenceKey: "parent",
|
|
20
20
|
instanceDisplayName: {},
|
|
21
|
+
instanceDisplayNameCustomizer: ({ instance, instanceDisplayName, instanceDisplayNameLocaleId, getDisplayNameForInstanceId, }) => ({
|
|
22
|
+
name: `${getDisplayNameForInstanceId("SubBiome", instance.parent)?.name ?? ""} — ${instanceDisplayName}`,
|
|
23
|
+
localeId: instanceDisplayNameLocaleId,
|
|
24
|
+
}),
|
|
21
25
|
uniqueConstraints: [
|
|
22
26
|
[
|
|
23
27
|
{
|
|
@@ -22,10 +22,19 @@ export const SubBiome = DB.Entity(import.meta.url, {
|
|
|
22
22
|
}),
|
|
23
23
|
parentReferenceKey: "parent",
|
|
24
24
|
instanceDisplayName: {},
|
|
25
|
+
instanceDisplayNameCustomizer: ({ instance, instanceDisplayName, instanceDisplayNameLocaleId, getDisplayNameForInstanceId, }) => ({
|
|
26
|
+
name: `${getDisplayNameForInstanceId("Biome", instance.parent)?.name ?? ""} — ${instanceDisplayName}`,
|
|
27
|
+
localeId: instanceDisplayNameLocaleId,
|
|
28
|
+
}),
|
|
25
29
|
uniqueConstraints: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
[
|
|
31
|
+
{
|
|
32
|
+
keyPath: "parent",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
entityMapKeyPath: "translations",
|
|
36
|
+
keyPathInEntityMap: "name",
|
|
37
|
+
},
|
|
38
|
+
],
|
|
30
39
|
],
|
|
31
40
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optolith/database-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.83.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",
|