@optolith/database-schema 0.77.1 → 0.78.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 +23 -0
- package/gen/types.d.ts +56 -3
- package/lib/cache/activatableSelectOptions.d.ts +2 -2
- package/lib/cache/activatableSelectOptions.js +2 -58
- package/lib/types/Culture.d.ts +1 -0
- package/lib/types/Culture.js +5 -1
- package/lib/types/Locale.d.ts +10 -0
- package/lib/types/Locale.js +11 -0
- package/lib/types/Profession.d.ts +178 -154
- package/lib/types/Profession.js +40 -1
- package/lib/types/Race.d.ts +1 -0
- package/lib/types/Race.js +10 -0
- package/lib/types/_ActivatableSelectOptions.d.ts +10 -0
- package/lib/types/_ActivatableSelectOptions.js +40 -0
- package/lib/types/prerequisites/single/ActivatablePrerequisite.js +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
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.78.0](https://github.com/Optolith/database-schema/compare/v0.77.1...v0.78.0) (2026-10-05)
|
|
6
|
+
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
* generalize special ability option selection for professions
|
|
10
|
+
* languages option with optional scripts inclusion
|
|
11
|
+
* missing magical action category translations
|
|
12
|
+
* some plant translations
|
|
13
|
+
* translation for empty profession variants
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* generalize special ability option selection for professions ([ef7d2c9](https://github.com/Optolith/database-schema/commit/ef7d2c9903f987720f173815e5454fdfa06b3a84))
|
|
18
|
+
* languages option with optional scripts inclusion ([31862d3](https://github.com/Optolith/database-schema/commit/31862d38d0027dae845f8b69218395c4307bf59d))
|
|
19
|
+
* optional different race and culture names within prerequisites ([5025e80](https://github.com/Optolith/database-schema/commit/5025e80131e41ad68aca9e51881f5ee08c23dad1))
|
|
20
|
+
* prepare activatable options validation ([d0c7e87](https://github.com/Optolith/database-schema/commit/d0c7e87e3ae9aac67aa4259e63ce8c9c51e1fb3e))
|
|
21
|
+
* some plant translations ([8f3fa6b](https://github.com/Optolith/database-schema/commit/8f3fa6ba1b569b9bcd3b355d01fd86c9fe287478))
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* missing magical action category translations ([510d11b](https://github.com/Optolith/database-schema/commit/510d11bd9e98d478ec3e4ab37627496b3c8deec9))
|
|
26
|
+
* translation for empty profession variants ([8f63b30](https://github.com/Optolith/database-schema/commit/8f63b30e14508ee0f900626bdefafed1b2657078))
|
|
27
|
+
|
|
5
28
|
## [0.77.1](https://github.com/Optolith/database-schema/compare/v0.77.0...v0.77.1) (2026-10-03)
|
|
6
29
|
|
|
7
30
|
### Features
|
package/gen/types.d.ts
CHANGED
|
@@ -413,6 +413,7 @@ export type EnumMap = {
|
|
|
413
413
|
ProfessionPrerequisiteGroup: ProfessionPrerequisiteGroup
|
|
414
414
|
ProfessionSpecialAbility: ProfessionSpecialAbility
|
|
415
415
|
ProfessionSpecialAbilityIdentifier: ProfessionSpecialAbilityIdentifier
|
|
416
|
+
ProfessionSpecialAbilityOption: ProfessionSpecialAbilityOption
|
|
416
417
|
PropertyDeclaration: PropertyDeclaration
|
|
417
418
|
PublicationCategory: PublicationCategory
|
|
418
419
|
PublicationPrerequisiteGroup: PublicationPrerequisiteGroup
|
|
@@ -840,6 +841,7 @@ export type TypeAliasMap = {
|
|
|
840
841
|
ProfessionPrerequisite: ProfessionPrerequisite
|
|
841
842
|
ProfessionPrerequisites: ProfessionPrerequisites
|
|
842
843
|
ProfessionSpecialAbilitySelection: ProfessionSpecialAbilitySelection
|
|
844
|
+
ProfessionSpecialAbilitySelectionItem: ProfessionSpecialAbilitySelectionItem
|
|
843
845
|
ProfessionSpellworkIdentifier: ProfessionSpellworkIdentifier
|
|
844
846
|
ProfessionVariantPackageOptions: ProfessionVariantPackageOptions
|
|
845
847
|
ProfessionVariantPrerequisites: ProfessionVariantPrerequisites
|
|
@@ -2026,6 +2028,9 @@ export interface Locale {
|
|
|
2026
2028
|
"Animist Powers": string
|
|
2027
2029
|
"Geode Rituals": string
|
|
2028
2030
|
"Zibilja Rituals": string
|
|
2031
|
+
"Bannzeichen": string
|
|
2032
|
+
"Goblin Rituals": string
|
|
2033
|
+
"Magical Runes": string
|
|
2029
2034
|
"Mod": string
|
|
2030
2035
|
"Check Modifier": string
|
|
2031
2036
|
"spells.traditions.general": string
|
|
@@ -2697,6 +2702,10 @@ export interface Locale {
|
|
|
2697
2702
|
".input {$count :number} {{check required every {$count}. application in the same month}}": string & { __params: { "count": number } }
|
|
2698
2703
|
"see {$link}": string & { __params: { "link": string } }
|
|
2699
2704
|
"CoD": string
|
|
2705
|
+
"Search Difficulty": string
|
|
2706
|
+
"Identification Difficulty": string
|
|
2707
|
+
"Plant Applications": string
|
|
2708
|
+
"Remedies and Traditions": string
|
|
2700
2709
|
"Romance Novel": string
|
|
2701
2710
|
"Poetry": string
|
|
2702
2711
|
"Political Pamphlet": string
|
|
@@ -2789,6 +2798,8 @@ export interface Locale {
|
|
|
2789
2798
|
"Variants": string
|
|
2790
2799
|
"Languages and Literacy totaling {$apValue} AP": string & { __params: { "apValue": string } }
|
|
2791
2800
|
"no Languages and Literacy totaling {$apValue} AP": string & { __params: { "apValue": string } }
|
|
2801
|
+
"Languages totaling {$apValue} AP": string & { __params: { "apValue": string } }
|
|
2802
|
+
"no Languages totaling {$apValue} AP": string & { __params: { "apValue": string } }
|
|
2792
2803
|
"Skill Specialization {$possibleSkills}": string & { __params: { "possibleSkills": string } }
|
|
2793
2804
|
"no Skill Specialization {$possibleSkills}": string & { __params: { "possibleSkills": string } }
|
|
2794
2805
|
"Skill Specialization for a {$skillOfGroup}": string & { __params: { "skillOfGroup": string } }
|
|
@@ -2815,6 +2826,7 @@ export interface Locale {
|
|
|
2815
2826
|
"except for {$list :list type=conjunction}": string & { __params: { "list": string[] } }
|
|
2816
2827
|
"depends on selected tradition": string
|
|
2817
2828
|
"Additional Prerequisites": string
|
|
2829
|
+
"no changes": string
|
|
2818
2830
|
"Enhancements": string
|
|
2819
2831
|
"SR {$value}": string & { __params: { "value": string } }
|
|
2820
2832
|
".input {$hiddenCount :number} {{Prerequisites}}": string & { __params: { "hiddenCount": number } }
|
|
@@ -4679,6 +4691,11 @@ export interface RaceTranslation {
|
|
|
4679
4691
|
*/
|
|
4680
4692
|
name: string
|
|
4681
4693
|
|
|
4694
|
+
/**
|
|
4695
|
+
* The race’s name in prerequisites, if different from the normal race’s name.
|
|
4696
|
+
*/
|
|
4697
|
+
nameInPrerequisites?: string
|
|
4698
|
+
|
|
4682
4699
|
/**
|
|
4683
4700
|
* The label for hair colors if it is not a hair color in that sense: Some races may have different labels for hair color such as scale color.
|
|
4684
4701
|
*/
|
|
@@ -9761,10 +9778,15 @@ export type Culture_ID = string
|
|
|
9761
9778
|
|
|
9762
9779
|
export interface CultureTranslation {
|
|
9763
9780
|
/**
|
|
9764
|
-
* The
|
|
9781
|
+
* The culture’s name.
|
|
9765
9782
|
*/
|
|
9766
9783
|
name: string
|
|
9767
9784
|
|
|
9785
|
+
/**
|
|
9786
|
+
* The culture’s name in prerequisites, if different from the normal culture’s name.
|
|
9787
|
+
*/
|
|
9788
|
+
nameInPrerequisites?: string
|
|
9789
|
+
|
|
9768
9790
|
/**
|
|
9769
9791
|
* The description of the area knowledge.
|
|
9770
9792
|
*/
|
|
@@ -10161,6 +10183,11 @@ export interface SpecificSkillSpecializationOptions {
|
|
|
10161
10183
|
* Buy languages and scripts for a specific amount of AP.
|
|
10162
10184
|
*/
|
|
10163
10185
|
export interface LanguagesScriptsOptions {
|
|
10186
|
+
/**
|
|
10187
|
+
* If scripts are included in the selection.
|
|
10188
|
+
*/
|
|
10189
|
+
includeScripts: boolean
|
|
10190
|
+
|
|
10164
10191
|
/**
|
|
10165
10192
|
* The AP value you can buy languages and scripts for.
|
|
10166
10193
|
*/
|
|
@@ -10517,7 +10544,7 @@ export interface ConstantProfessionSpecialAbility {
|
|
|
10517
10544
|
/**
|
|
10518
10545
|
* Received select options. Order is important. Typically, you only need the first array index, though.
|
|
10519
10546
|
*/
|
|
10520
|
-
options?:
|
|
10547
|
+
options?: ProfessionSpecialAbilityOption[]
|
|
10521
10548
|
}
|
|
10522
10549
|
|
|
10523
10550
|
export type ProfessionSpecialAbilityIdentifier =
|
|
@@ -18280,11 +18307,37 @@ export interface WeaponEnchantmentTranslation {
|
|
|
18280
18307
|
errata?: Errata
|
|
18281
18308
|
}
|
|
18282
18309
|
|
|
18310
|
+
export type ProfessionSpecialAbilityOption =
|
|
18311
|
+
| {
|
|
18312
|
+
kind: "Identifier"
|
|
18313
|
+
Identifier: RequirableSelectOptionIdentifier
|
|
18314
|
+
}
|
|
18315
|
+
| {
|
|
18316
|
+
kind: "Select"
|
|
18317
|
+
}
|
|
18318
|
+
|
|
18283
18319
|
export interface ProfessionSpecialAbilitySelection {
|
|
18284
18320
|
/**
|
|
18285
18321
|
* The list of special abilities to choose from. Must contain at least two entries.
|
|
18286
18322
|
*/
|
|
18287
|
-
options:
|
|
18323
|
+
options: ProfessionSpecialAbilitySelectionItem[]
|
|
18324
|
+
}
|
|
18325
|
+
|
|
18326
|
+
export interface ProfessionSpecialAbilitySelectionItem {
|
|
18327
|
+
/**
|
|
18328
|
+
* The identifier of the special ability to grant.
|
|
18329
|
+
*/
|
|
18330
|
+
id: ProfessionSpecialAbilityIdentifier
|
|
18331
|
+
|
|
18332
|
+
/**
|
|
18333
|
+
* The level of the received special ability. If not specified and the special ability has levels, level 1 is used automatically.
|
|
18334
|
+
*/
|
|
18335
|
+
level?: number
|
|
18336
|
+
|
|
18337
|
+
/**
|
|
18338
|
+
* Received select options. Order is important. Typically, you only need the first array index, though.
|
|
18339
|
+
*/
|
|
18340
|
+
options?: RequirableSelectOptionIdentifier[]
|
|
18288
18341
|
}
|
|
18289
18342
|
|
|
18290
18343
|
export interface CombatTechniqueRating {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Case } from "tsondb/schema/gen";
|
|
2
|
-
import type { ActivatableIdentifier, GeneralSelectOption, RequirableSelectOptionIdentifier, TradeSecretAdventurePointsValue } from "../../gen/types.js";
|
|
2
|
+
import type { ActivatableIdentifier as ActivatableIdentifierType, GeneralSelectOption, RequirableSelectOptionIdentifier, TradeSecretAdventurePointsValue } from "../../gen/types.js";
|
|
3
3
|
import type { CacheBuilder } from "./internal.ts";
|
|
4
4
|
import type { ResolvedNewSkillApplication, ResolvedSkillUse } from "./newApplicationsAndUses.ts";
|
|
5
5
|
export type ResolvedSelectOptionIdentifier = RequirableSelectOptionIdentifier | Case<"Blessing" | "Cantrip" | "Script" | "Culture" | "SexPractice" | "HomunculusType" | "BlessedTradition" | "Disease" | "Poison" | "TargetCategory", string>;
|
|
@@ -12,7 +12,7 @@ export type ResolvedSelectOption = {
|
|
|
12
12
|
newApplications: ResolvedNewSkillApplication[];
|
|
13
13
|
uses: ResolvedSkillUse[];
|
|
14
14
|
};
|
|
15
|
-
export type ActivatableSelectOptionsCache = Record<
|
|
15
|
+
export type ActivatableSelectOptionsCache = Record<ActivatableIdentifierType["kind"], {
|
|
16
16
|
[id: string]: ResolvedSelectOption[];
|
|
17
17
|
}>;
|
|
18
18
|
export declare const activatableSelectOptionsCacheBuilder: CacheBuilder<ActivatableSelectOptionsCache>;
|
|
@@ -4,6 +4,7 @@ import { mapObject } from "@elyukai/utils/object";
|
|
|
4
4
|
import { compareNullish, compareNumber } from "@elyukai/utils/ordering";
|
|
5
5
|
import { assertExhaustive } from "@elyukai/utils/typeSafety";
|
|
6
6
|
import { Case, fromUniformCase } from "tsondb/schema/gen";
|
|
7
|
+
import { ActivatableIdentifier } from "../types/_IdentifierGroup.js";
|
|
7
8
|
const wrapPlainApValue = (apValue) => apValue === undefined ? undefined : Case("Fixed", apValue);
|
|
8
9
|
const matchesSpecificSkillishIdList = (config, matches) => {
|
|
9
10
|
const isInList = config.list.some(matches);
|
|
@@ -758,64 +759,7 @@ const getSelectOptionsForResults = (database, entity, results) => results.reduce
|
|
|
758
759
|
}
|
|
759
760
|
return acc;
|
|
760
761
|
}, {});
|
|
761
|
-
const cacheKeyBase =
|
|
762
|
-
Advantage: null,
|
|
763
|
-
Disadvantage: null,
|
|
764
|
-
AdvancedCombatSpecialAbility: null,
|
|
765
|
-
AdvancedKarmaSpecialAbility: null,
|
|
766
|
-
AdvancedMagicalSpecialAbility: null,
|
|
767
|
-
AdvancedSkillSpecialAbility: null,
|
|
768
|
-
AncestorGlyph: null,
|
|
769
|
-
ArcaneOrbEnchantment: null,
|
|
770
|
-
AttireEnchantment: null,
|
|
771
|
-
Beutelzauber: null,
|
|
772
|
-
BlessedTradition: null,
|
|
773
|
-
BowlEnchantment: null,
|
|
774
|
-
BrawlingSpecialAbility: null,
|
|
775
|
-
CauldronEnchantment: null,
|
|
776
|
-
CeremonialItemSpecialAbility: null,
|
|
777
|
-
ChronicleEnchantment: null,
|
|
778
|
-
CombatSpecialAbility: null,
|
|
779
|
-
CombatStyleSpecialAbility: null,
|
|
780
|
-
CommandSpecialAbility: null,
|
|
781
|
-
DaggerRitual: null,
|
|
782
|
-
FamiliarSpecialAbility: null,
|
|
783
|
-
FatePointSexSpecialAbility: null,
|
|
784
|
-
FatePointSpecialAbility: null,
|
|
785
|
-
FoolsHatEnchantment: null,
|
|
786
|
-
GeneralSpecialAbility: null,
|
|
787
|
-
Haubenzauber: null,
|
|
788
|
-
Hauerkettenzauber: null,
|
|
789
|
-
InstrumentEnchantment: null,
|
|
790
|
-
KarmaSpecialAbility: null,
|
|
791
|
-
Keulenzauber: null,
|
|
792
|
-
Krallenkettenzauber: null,
|
|
793
|
-
Kristallkugelzauber: null,
|
|
794
|
-
LiturgicalStyleSpecialAbility: null,
|
|
795
|
-
LycantropicGift: null,
|
|
796
|
-
MagicalSign: null,
|
|
797
|
-
MagicalSpecialAbility: null,
|
|
798
|
-
MagicalTradition: null,
|
|
799
|
-
MagicStyleSpecialAbility: null,
|
|
800
|
-
OrbEnchantment: null,
|
|
801
|
-
PactGift: null,
|
|
802
|
-
ProtectiveWardingCircleSpecialAbility: null,
|
|
803
|
-
RingEnchantment: null,
|
|
804
|
-
Schweinetrommelzauber: null,
|
|
805
|
-
Sermon: null,
|
|
806
|
-
SexSpecialAbility: null,
|
|
807
|
-
SickleRitual: null,
|
|
808
|
-
SikaryanDrainSpecialAbility: null,
|
|
809
|
-
SkillStyleSpecialAbility: null,
|
|
810
|
-
SpellSwordEnchantment: null,
|
|
811
|
-
StaffEnchantment: null,
|
|
812
|
-
ToyEnchantment: null,
|
|
813
|
-
Trinkhornzauber: null,
|
|
814
|
-
VampiricGift: null,
|
|
815
|
-
Vision: null,
|
|
816
|
-
WandEnchantment: null,
|
|
817
|
-
WeaponEnchantment: null,
|
|
818
|
-
};
|
|
762
|
+
const cacheKeyBase = mapObject(ActivatableIdentifier.type.value.values, () => null);
|
|
819
763
|
export const activatableSelectOptionsCacheBuilder = database => Object.fromEntries(Object.keys(cacheKeyBase).map((entity) => [
|
|
820
764
|
entity,
|
|
821
765
|
getSelectOptionsForResults(database, entity, database.getAllInstanceContainersOfEntity(entity)),
|
package/lib/types/Culture.d.ts
CHANGED
|
@@ -242,6 +242,7 @@ export declare const Culture: DB.Entity<"Culture", {
|
|
|
242
242
|
}>, []>>>, []>>, true>;
|
|
243
243
|
translations: DB.MemberDecl<DB.NestedEntityMap<"CultureTranslation", {
|
|
244
244
|
name: DB.MemberDecl<DB.String, true>;
|
|
245
|
+
nameInPrerequisites: DB.MemberDecl<DB.String, false>;
|
|
245
246
|
area_knowledge: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AreaKnowledgeTranslation", DB.Object<{
|
|
246
247
|
description: DB.MemberDecl<DB.String, true>;
|
|
247
248
|
abbreviated: DB.MemberDecl<DB.String, true>;
|
package/lib/types/Culture.js
CHANGED
|
@@ -60,7 +60,11 @@ export const Culture = DB.Entity(import.meta.url, {
|
|
|
60
60
|
src,
|
|
61
61
|
translations: NestedTranslationMap(DB.Required, "Culture", DB.Object({
|
|
62
62
|
name: DB.Required({
|
|
63
|
-
comment: "The
|
|
63
|
+
comment: "The culture’s name.",
|
|
64
|
+
type: DB.String({ minLength: 1 }),
|
|
65
|
+
}),
|
|
66
|
+
nameInPrerequisites: DB.Optional({
|
|
67
|
+
comment: "The culture’s name in prerequisites, if different from the normal culture’s name.",
|
|
64
68
|
type: DB.String({ minLength: 1 }),
|
|
65
69
|
}),
|
|
66
70
|
area_knowledge: DB.Required({
|
package/lib/types/Locale.d.ts
CHANGED
|
@@ -889,6 +889,9 @@ export declare const Locale: DB.Entity<"Locale", {
|
|
|
889
889
|
"Animist Powers": null;
|
|
890
890
|
"Geode Rituals": null;
|
|
891
891
|
"Zibilja Rituals": null;
|
|
892
|
+
Bannzeichen: null;
|
|
893
|
+
"Goblin Rituals": null;
|
|
894
|
+
"Magical Runes": null;
|
|
892
895
|
Mod: null;
|
|
893
896
|
"Check Modifier": null;
|
|
894
897
|
"spells.traditions.general": null;
|
|
@@ -1575,6 +1578,10 @@ export declare const Locale: DB.Entity<"Locale", {
|
|
|
1575
1578
|
".input {$count :number} {{check required every {$count}. application in the same month}}": null;
|
|
1576
1579
|
"see {$link}": null;
|
|
1577
1580
|
CoD: null;
|
|
1581
|
+
"Search Difficulty": null;
|
|
1582
|
+
"Identification Difficulty": null;
|
|
1583
|
+
"Plant Applications": null;
|
|
1584
|
+
"Remedies and Traditions": null;
|
|
1578
1585
|
"Romance Novel": null;
|
|
1579
1586
|
Poetry: null;
|
|
1580
1587
|
"Political Pamphlet": null;
|
|
@@ -1667,6 +1674,8 @@ export declare const Locale: DB.Entity<"Locale", {
|
|
|
1667
1674
|
Variants: null;
|
|
1668
1675
|
"Languages and Literacy totaling {$apValue} AP": null;
|
|
1669
1676
|
"no Languages and Literacy totaling {$apValue} AP": null;
|
|
1677
|
+
"Languages totaling {$apValue} AP": null;
|
|
1678
|
+
"no Languages totaling {$apValue} AP": null;
|
|
1670
1679
|
"Skill Specialization {$possibleSkills}": null;
|
|
1671
1680
|
"no Skill Specialization {$possibleSkills}": null;
|
|
1672
1681
|
"Skill Specialization for a {$skillOfGroup}": null;
|
|
@@ -1693,6 +1702,7 @@ export declare const Locale: DB.Entity<"Locale", {
|
|
|
1693
1702
|
"except for {$list :list type=conjunction}": null;
|
|
1694
1703
|
"depends on selected tradition": null;
|
|
1695
1704
|
"Additional Prerequisites": null;
|
|
1705
|
+
"no changes": null;
|
|
1696
1706
|
Enhancements: null;
|
|
1697
1707
|
"SR {$value}": null;
|
|
1698
1708
|
".input {$hiddenCount :number} {{Prerequisites}}": null;
|
package/lib/types/Locale.js
CHANGED
|
@@ -912,6 +912,9 @@ export const Locale = DB.Entity(import.meta.url, {
|
|
|
912
912
|
"Animist Powers": null,
|
|
913
913
|
"Geode Rituals": null,
|
|
914
914
|
"Zibilja Rituals": null,
|
|
915
|
+
"Bannzeichen": null,
|
|
916
|
+
"Goblin Rituals": null,
|
|
917
|
+
"Magical Runes": null,
|
|
915
918
|
"Mod": null,
|
|
916
919
|
"Check Modifier": null,
|
|
917
920
|
"spells.traditions.general": null,
|
|
@@ -1618,6 +1621,11 @@ export const Locale = DB.Entity(import.meta.url, {
|
|
|
1618
1621
|
".input {$count :number} {{check required every {$count}. application in the same month}}": null,
|
|
1619
1622
|
"see {$link}": null,
|
|
1620
1623
|
"CoD": null,
|
|
1624
|
+
// plants
|
|
1625
|
+
"Search Difficulty": null,
|
|
1626
|
+
"Identification Difficulty": null,
|
|
1627
|
+
"Plant Applications": null,
|
|
1628
|
+
"Remedies and Traditions": null,
|
|
1621
1629
|
// books
|
|
1622
1630
|
"Romance Novel": null,
|
|
1623
1631
|
"Poetry": null,
|
|
@@ -1719,6 +1727,8 @@ export const Locale = DB.Entity(import.meta.url, {
|
|
|
1719
1727
|
"Variants": null,
|
|
1720
1728
|
"Languages and Literacy totaling {$apValue} AP": null,
|
|
1721
1729
|
"no Languages and Literacy totaling {$apValue} AP": null,
|
|
1730
|
+
"Languages totaling {$apValue} AP": null,
|
|
1731
|
+
"no Languages totaling {$apValue} AP": null,
|
|
1722
1732
|
"Skill Specialization {$possibleSkills}": null,
|
|
1723
1733
|
"no Skill Specialization {$possibleSkills}": null,
|
|
1724
1734
|
"Skill Specialization for a {$skillOfGroup}": null,
|
|
@@ -1745,6 +1755,7 @@ export const Locale = DB.Entity(import.meta.url, {
|
|
|
1745
1755
|
"except for {$list :list type=conjunction}": null,
|
|
1746
1756
|
"depends on selected tradition": null,
|
|
1747
1757
|
"Additional Prerequisites": null,
|
|
1758
|
+
"no changes": null,
|
|
1748
1759
|
// Enhancements
|
|
1749
1760
|
"Enhancements": null,
|
|
1750
1761
|
"SR {$value}": null,
|
|
@@ -49,6 +49,7 @@ export declare const Profession: DB.Entity<"Profession", {
|
|
|
49
49
|
Group: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
50
50
|
}, []>>, false>;
|
|
51
51
|
languages_scripts: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LanguagesScriptsOptions", DB.Object<{
|
|
52
|
+
includeScripts: DB.MemberDecl<DB.Boolean, true>;
|
|
52
53
|
ap_value: DB.MemberDecl<DB.Integer, true>;
|
|
53
54
|
}>, []>>, false>;
|
|
54
55
|
combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CombatTechniquesOptions", DB.Object<{
|
|
@@ -149,31 +150,34 @@ export declare const Profession: DB.Entity<"Profession", {
|
|
|
149
150
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
150
151
|
}, []>>, true>;
|
|
151
152
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
152
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
153
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
154
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
155
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
156
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
157
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
158
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
159
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
160
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
161
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
162
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
163
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
164
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
165
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
166
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
167
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
168
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
169
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
170
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
171
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
172
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
173
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
174
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
175
|
+
}, []>>>;
|
|
176
|
+
Select: DB.EnumCase<null>;
|
|
173
177
|
}, []>>>, false>;
|
|
174
178
|
}>, []>>>;
|
|
175
179
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
176
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
180
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
177
181
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
178
182
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
179
183
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -416,31 +420,34 @@ export declare const Profession: DB.Entity<"Profession", {
|
|
|
416
420
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
417
421
|
}, []>>, true>;
|
|
418
422
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
419
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
423
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
424
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
425
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
426
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
427
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
428
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
429
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
430
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
431
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
432
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
433
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
434
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
435
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
436
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
437
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
438
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
439
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
440
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
441
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
442
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
443
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
444
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
445
|
+
}, []>>>;
|
|
446
|
+
Select: DB.EnumCase<null>;
|
|
440
447
|
}, []>>>, false>;
|
|
441
448
|
}>, []>>>;
|
|
442
449
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
443
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
450
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
444
451
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
445
452
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
446
453
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -837,6 +844,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
|
|
|
837
844
|
Group: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
838
845
|
}, []>>, false>;
|
|
839
846
|
languages_scripts: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LanguagesScriptsOptions", DB.Object<{
|
|
847
|
+
includeScripts: DB.MemberDecl<DB.Boolean, true>;
|
|
840
848
|
ap_value: DB.MemberDecl<DB.Integer, true>;
|
|
841
849
|
}>, []>>, false>;
|
|
842
850
|
combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CombatTechniquesOptions", DB.Object<{
|
|
@@ -937,31 +945,34 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
|
|
|
937
945
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
938
946
|
}, []>>, true>;
|
|
939
947
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
940
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
948
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
949
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
950
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
951
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
952
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
953
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
954
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
955
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
956
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
957
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
958
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
959
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
960
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
961
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
962
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
963
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
964
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
965
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
966
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
967
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
968
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
969
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
970
|
+
}, []>>>;
|
|
971
|
+
Select: DB.EnumCase<null>;
|
|
961
972
|
}, []>>>, false>;
|
|
962
973
|
}>, []>>>;
|
|
963
974
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
964
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
975
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
965
976
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
966
977
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
967
978
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -1204,31 +1215,34 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
|
|
|
1204
1215
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1205
1216
|
}, []>>, true>;
|
|
1206
1217
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1207
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1218
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
1219
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
1220
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1221
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1222
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1223
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1224
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1225
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1226
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1227
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1228
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1229
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1230
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1231
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1232
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1233
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1234
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1235
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1236
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1237
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1238
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1239
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1240
|
+
}, []>>>;
|
|
1241
|
+
Select: DB.EnumCase<null>;
|
|
1228
1242
|
}, []>>>, false>;
|
|
1229
1243
|
}>, []>>>;
|
|
1230
1244
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
1231
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
1245
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
1232
1246
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
1233
1247
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1234
1248
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -1617,6 +1631,7 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
|
|
|
1617
1631
|
Group: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1618
1632
|
}, []>>, false>;
|
|
1619
1633
|
languages_scripts: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LanguagesScriptsOptions", DB.Object<{
|
|
1634
|
+
includeScripts: DB.MemberDecl<DB.Boolean, true>;
|
|
1620
1635
|
ap_value: DB.MemberDecl<DB.Integer, true>;
|
|
1621
1636
|
}>, []>>, false>;
|
|
1622
1637
|
combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CombatTechniquesOptions", DB.Object<{
|
|
@@ -1717,31 +1732,34 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
|
|
|
1717
1732
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1718
1733
|
}, []>>, true>;
|
|
1719
1734
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1720
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1735
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
1736
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
1737
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1738
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1739
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1740
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1741
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1742
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1743
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1744
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1745
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1746
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1747
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1748
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1749
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1750
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1751
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1752
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1753
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1754
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1755
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1756
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1757
|
+
}, []>>>;
|
|
1758
|
+
Select: DB.EnumCase<null>;
|
|
1741
1759
|
}, []>>>, false>;
|
|
1742
1760
|
}>, []>>>;
|
|
1743
1761
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
1744
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
1762
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
1745
1763
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
1746
1764
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1747
1765
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -1984,31 +2002,34 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
|
|
|
1984
2002
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
1985
2003
|
}, []>>, true>;
|
|
1986
2004
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
1987
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2005
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
2006
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
2007
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2008
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2009
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2010
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2011
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2012
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2013
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2014
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2015
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2016
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2017
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2018
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2019
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2020
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2021
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2022
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2023
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2024
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2025
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2026
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2027
|
+
}, []>>>;
|
|
2028
|
+
Select: DB.EnumCase<null>;
|
|
2008
2029
|
}, []>>>, false>;
|
|
2009
2030
|
}>, []>>>;
|
|
2010
2031
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
2011
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
2032
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
2012
2033
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
2013
2034
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2014
2035
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
@@ -2261,31 +2282,34 @@ export declare const ProfessionVariant: DB.Entity<"ProfessionVariant", {
|
|
|
2261
2282
|
Vision: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2262
2283
|
}, []>>, true>;
|
|
2263
2284
|
level: DB.MemberDecl<DB.Integer, false>;
|
|
2264
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityOption", {
|
|
2286
|
+
Identifier: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
|
|
2287
|
+
General: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2288
|
+
Race: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2289
|
+
Skill: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2290
|
+
SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2291
|
+
CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2292
|
+
RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2293
|
+
Property: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2294
|
+
Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2295
|
+
Disease: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2296
|
+
Poison: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2297
|
+
Language: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2298
|
+
AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2299
|
+
LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2300
|
+
Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2301
|
+
Spell: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2302
|
+
Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2303
|
+
TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2304
|
+
ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2305
|
+
ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2306
|
+
Element: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2307
|
+
}, []>>>;
|
|
2308
|
+
Select: DB.EnumCase<null>;
|
|
2285
2309
|
}, []>>>, false>;
|
|
2286
2310
|
}>, []>>>;
|
|
2287
2311
|
Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
|
|
2288
|
-
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"
|
|
2312
|
+
options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelectionItem", DB.Object<{
|
|
2289
2313
|
id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
|
|
2290
2314
|
Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
|
|
2291
2315
|
ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
|
package/lib/types/Profession.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isNotNullish } from "@elyukai/utils/nullable";
|
|
2
2
|
import * as DB from "tsondb/schema/dsl";
|
|
3
|
+
import { verifyOptionsForActivatableEntry } from "./_ActivatableSelectOptions.js";
|
|
3
4
|
import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage.js";
|
|
4
5
|
import { AdvantageIdentifier, BannzeichenOptionIdentifier, CantripIdentifier, CurriculumIdentifier, DisadvantageIdentifier, ExperienceLevelIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionPackageIdentifier, ProfessionVersionIdentifier, SkillGroupIdentifier, SkillIdentifier, } from "./_Identifier.js";
|
|
5
6
|
import { CombatTechniqueIdentifier, LiturgyIdentifier, MagicalActionIdentifier, ProfessionSpecialAbilityIdentifier, RequirableSelectOptionIdentifier, SpellworkIdentifier, } from "./_IdentifierGroup.js";
|
|
@@ -305,8 +306,39 @@ const ProfessionSpecialAbility = DB.Enum(import.meta.url, {
|
|
|
305
306
|
Selection: DB.EnumCase({ type: DB.IncludeIdentifier(ProfessionSpecialAbilitySelection) }),
|
|
306
307
|
}),
|
|
307
308
|
});
|
|
309
|
+
const ProfessionSpecialAbilityOption = DB.Enum(import.meta.url, {
|
|
310
|
+
name: "ProfessionSpecialAbilityOption",
|
|
311
|
+
values: () => ({
|
|
312
|
+
Identifier: DB.EnumCase({
|
|
313
|
+
comment: "The option is defined by the profession.",
|
|
314
|
+
type: DB.IncludeIdentifier(RequirableSelectOptionIdentifier),
|
|
315
|
+
}),
|
|
316
|
+
Select: DB.EnumCase({
|
|
317
|
+
comment: "The option has to be chosen when applying the profession.",
|
|
318
|
+
type: null,
|
|
319
|
+
}),
|
|
320
|
+
}),
|
|
321
|
+
});
|
|
308
322
|
const ConstantProfessionSpecialAbility = DB.TypeAlias(import.meta.url, {
|
|
309
323
|
name: "ConstantProfessionSpecialAbility",
|
|
324
|
+
type: () => DB.Object({
|
|
325
|
+
id: DB.Required({
|
|
326
|
+
comment: "The identifier of the special ability to grant.",
|
|
327
|
+
type: DB.IncludeIdentifier(ProfessionSpecialAbilityIdentifier),
|
|
328
|
+
}),
|
|
329
|
+
level: DB.Optional({
|
|
330
|
+
comment: "The level of the received special ability. If not specified and the special ability has levels, level 1 is used automatically.",
|
|
331
|
+
type: DB.Integer({ minimum: 1 }),
|
|
332
|
+
}),
|
|
333
|
+
options: DB.Optional({
|
|
334
|
+
comment: "Received select options. Order is important. Typically, you only need the first array index, though.",
|
|
335
|
+
type: DB.Array(DB.IncludeIdentifier(ProfessionSpecialAbilityOption), { minItems: 1 }),
|
|
336
|
+
}),
|
|
337
|
+
}),
|
|
338
|
+
customConstraints: ({ instanceContent, getInstanceById, getAllChildInstancesForParent }) => verifyOptionsForActivatableEntry(instanceContent, getInstanceById, getAllChildInstancesForParent),
|
|
339
|
+
});
|
|
340
|
+
const ProfessionSpecialAbilitySelectionItem = DB.TypeAlias(import.meta.url, {
|
|
341
|
+
name: "ProfessionSpecialAbilitySelectionItem",
|
|
310
342
|
type: () => DB.Object({
|
|
311
343
|
id: DB.Required({
|
|
312
344
|
comment: "The identifier of the special ability to grant.",
|
|
@@ -321,13 +353,16 @@ const ConstantProfessionSpecialAbility = DB.TypeAlias(import.meta.url, {
|
|
|
321
353
|
type: DB.Array(DB.IncludeIdentifier(RequirableSelectOptionIdentifier), { minItems: 1 }),
|
|
322
354
|
}),
|
|
323
355
|
}),
|
|
356
|
+
customConstraints: ({ instanceContent, getInstanceById, getAllChildInstancesForParent }) => verifyOptionsForActivatableEntry(instanceContent, getInstanceById, getAllChildInstancesForParent),
|
|
324
357
|
});
|
|
325
358
|
const ProfessionSpecialAbilitySelection = DB.TypeAlias(import.meta.url, {
|
|
326
359
|
name: "ProfessionSpecialAbilitySelection",
|
|
327
360
|
type: () => DB.Object({
|
|
328
361
|
options: DB.Required({
|
|
329
362
|
comment: `The list of special abilities to choose from. Must contain at least two entries.`,
|
|
330
|
-
type: DB.Array(DB.IncludeIdentifier(
|
|
363
|
+
type: DB.Array(DB.IncludeIdentifier(ProfessionSpecialAbilitySelectionItem), {
|
|
364
|
+
minItems: 2,
|
|
365
|
+
}),
|
|
331
366
|
}),
|
|
332
367
|
}),
|
|
333
368
|
});
|
|
@@ -542,6 +577,10 @@ const LanguagesScriptsOptions = DB.TypeAlias(import.meta.url, {
|
|
|
542
577
|
name: "LanguagesScriptsOptions",
|
|
543
578
|
comment: `Buy languages and scripts for a specific amount of AP.`,
|
|
544
579
|
type: () => DB.Object({
|
|
580
|
+
includeScripts: DB.Required({
|
|
581
|
+
comment: "If scripts are included in the selection.",
|
|
582
|
+
type: DB.Boolean(),
|
|
583
|
+
}),
|
|
545
584
|
ap_value: DB.Required({
|
|
546
585
|
comment: "The AP value you can buy languages and scripts for.",
|
|
547
586
|
type: DB.Integer({ minimum: 2 }),
|
package/lib/types/Race.d.ts
CHANGED
|
@@ -354,6 +354,7 @@ export declare const Race: DB.Entity<"Race", {
|
|
|
354
354
|
}>, []>>>, []>>, true>;
|
|
355
355
|
translations: DB.MemberDecl<DB.NestedEntityMap<"RaceTranslation", {
|
|
356
356
|
name: DB.MemberDecl<DB.String, true>;
|
|
357
|
+
nameInPrerequisites: DB.MemberDecl<DB.String, false>;
|
|
357
358
|
hairColorLabel: DB.MemberDecl<DB.String, false>;
|
|
358
359
|
errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
|
|
359
360
|
date: DB.MemberDecl<DB.Date, true>;
|
package/lib/types/Race.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { isNotNullish } from "@elyukai/utils/nullable";
|
|
2
2
|
import * as DB from "tsondb/schema/dsl";
|
|
3
|
+
import { Case } from "tsondb/schema/gen";
|
|
4
|
+
import { verifyOptionsForActivatableEntry } from "./_ActivatableSelectOptions.js";
|
|
3
5
|
import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage.js";
|
|
4
6
|
import { Dice, DieType } from "./_Dice.js";
|
|
5
7
|
import { AdvantageIdentifier, AttributeIdentifier, CultureIdentifier, DisadvantageIdentifier, EyeColorIdentifier, HairColorIdentifier, RaceIdentifier, } from "./_Identifier.js";
|
|
@@ -58,6 +60,10 @@ export const Race = DB.Entity(import.meta.url, {
|
|
|
58
60
|
comment: "The race’s name.",
|
|
59
61
|
type: DB.String({ minLength: 1 }),
|
|
60
62
|
}),
|
|
63
|
+
nameInPrerequisites: DB.Optional({
|
|
64
|
+
comment: "The race’s name in prerequisites, if different from the normal race’s name.",
|
|
65
|
+
type: DB.String({ minLength: 1 }),
|
|
66
|
+
}),
|
|
61
67
|
hairColorLabel: DB.Optional({
|
|
62
68
|
comment: "The label for hair colors if it is not a hair color in that sense: Some races may have different labels for hair color such as scale color.",
|
|
63
69
|
type: DB.String({ minLength: 1 }),
|
|
@@ -324,6 +330,10 @@ export const RaceVariant = DB.Entity(import.meta.url, {
|
|
|
324
330
|
},
|
|
325
331
|
],
|
|
326
332
|
],
|
|
333
|
+
customConstraints: ({ instanceContent, getInstanceById, getAllChildInstancesForParent }) => [
|
|
334
|
+
...(instanceContent.automatic_advantages?.flatMap(advantage => verifyOptionsForActivatableEntry({ ...advantage, id: Case("Advantage", advantage.id) }, getInstanceById, getAllChildInstancesForParent)) ?? []),
|
|
335
|
+
...(instanceContent.automatic_disadvantages?.flatMap(disadvantage => verifyOptionsForActivatableEntry({ ...disadvantage, id: Case("Disadvantage", disadvantage.id) }, getInstanceById, getAllChildInstancesForParent)) ?? []),
|
|
336
|
+
],
|
|
327
337
|
});
|
|
328
338
|
const RandomHeightGeneration = DB.TypeAlias(import.meta.url, {
|
|
329
339
|
name: "RandomHeightGeneration",
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
import { Case, type GetAllChildInstanceContainersForParent, type GetInstanceById } from "tsondb/schema/gen";
|
|
3
|
+
import type { ActivatableIdentifier, ProfessionSpecialAbilityOption, RequirableSelectOptionIdentifier } from "../../gen/types.js";
|
|
2
4
|
export declare const select_options: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptions", DB.Object<{
|
|
3
5
|
derived: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionCategory", {
|
|
4
6
|
Blessings: DB.EnumCase<null>;
|
|
@@ -1223,3 +1225,11 @@ export declare const explicit_select_options: DB.MemberDecl<DB.ChildEntities<DB.
|
|
|
1223
1225
|
}>, []>>>, []>>, false>;
|
|
1224
1226
|
}>, true>;
|
|
1225
1227
|
}, "parent">>, true>;
|
|
1228
|
+
/**
|
|
1229
|
+
* Stub for once option rules are formalized in the database schema.
|
|
1230
|
+
*/
|
|
1231
|
+
export declare const verifyOptionsForActivatableEntry: (value: {
|
|
1232
|
+
id: ActivatableIdentifier | Case<"Enhancement", string>;
|
|
1233
|
+
level?: number;
|
|
1234
|
+
options?: (RequirableSelectOptionIdentifier | ProfessionSpecialAbilityOption)[];
|
|
1235
|
+
}, getInstanceById: GetInstanceById, getAllChildInstancesForParent: GetAllChildInstanceContainersForParent) => string[];
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { isEmpty, isNotEmpty } from "@elyukai/utils/array/nonEmpty";
|
|
1
2
|
import * as DB from "tsondb/schema/dsl";
|
|
3
|
+
import { Case, fromUniformCase, } from "tsondb/schema/gen";
|
|
2
4
|
import { NestedTranslationMap } from "./Locale.js";
|
|
3
5
|
import { SelectOptionCategory } from "./_ActivatableSelectOptionCategory.js";
|
|
4
6
|
import { NewSkillApplication, SkillUse } from "./_ActivatableSkillApplicationsAndUses.js";
|
|
@@ -216,3 +218,41 @@ Note that this is only a full definition of options for simple logic that can be
|
|
|
216
218
|
// ]
|
|
217
219
|
// }
|
|
218
220
|
// },
|
|
221
|
+
/**
|
|
222
|
+
* Stub for once option rules are formalized in the database schema.
|
|
223
|
+
*/
|
|
224
|
+
export const verifyOptionsForActivatableEntry = (value, getInstanceById, getAllChildInstancesForParent) => {
|
|
225
|
+
if (value.id.kind === "Enhancement") {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
const referencedInstance = getInstanceById(value.id);
|
|
229
|
+
if (!referencedInstance) {
|
|
230
|
+
return [
|
|
231
|
+
`Referenced instance of entity ${value.id.kind} with id ${fromUniformCase(value.id)} not found.`,
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
const generalSelectOptions = getAllChildInstancesForParent("GeneralSelectOption", value.id);
|
|
235
|
+
const errorMessages = [];
|
|
236
|
+
if (!("levels" in referencedInstance && typeof referencedInstance.levels === "number") &&
|
|
237
|
+
value.level !== undefined) {
|
|
238
|
+
errorMessages.push(`The referenced instance of entity ${value.id.kind} with id ${fromUniformCase(value.id)} does not have levels, but a level was specified in the prerequisite.`);
|
|
239
|
+
}
|
|
240
|
+
if ((("select_options" in referencedInstance &&
|
|
241
|
+
referencedInstance.select_options?.derived !== undefined) ||
|
|
242
|
+
isNotEmpty(generalSelectOptions)) &&
|
|
243
|
+
(value.options === undefined || isEmpty(value.options))) {
|
|
244
|
+
errorMessages.push(`The referenced instance of entity ${value.id.kind} with id ${fromUniformCase(value.id)} has select options, but no options were specified in the prerequisite.`);
|
|
245
|
+
}
|
|
246
|
+
for (const option of value.options ?? []) {
|
|
247
|
+
if (option.kind === "General") {
|
|
248
|
+
const referencedOption = getInstanceById(Case("GeneralSelectOption", option.General));
|
|
249
|
+
if (!referencedOption) {
|
|
250
|
+
errorMessages.push(`Referenced select option of entity GeneralSelectOption with id ${fromUniformCase(option)} not found.`);
|
|
251
|
+
}
|
|
252
|
+
if (referencedOption?.parent !== value.id) {
|
|
253
|
+
errorMessages.push(`Referenced select option of entity GeneralSelectOption with id ${fromUniformCase(option)} does not belong to the instance of entity ${value.id.kind} with id ${fromUniformCase(value.id)}.`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return [];
|
|
258
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
import { verifyOptionsForActivatableEntry } from "../../_ActivatableSelectOptions.js";
|
|
2
3
|
import { ActivatableIdentifier, RequirableSelectOptionIdentifier } from "../../_IdentifierGroup.js";
|
|
3
4
|
import { Preconditions } from "../ConditionalPrerequisites.js";
|
|
4
5
|
import { DisplayOption } from "../DisplayOption.js";
|
|
@@ -29,4 +30,5 @@ export const ActivatablePrerequisite = DB.TypeAlias(import.meta.url, {
|
|
|
29
30
|
type: DB.IncludeIdentifier(Preconditions),
|
|
30
31
|
}),
|
|
31
32
|
}),
|
|
33
|
+
customConstraints: ({ instanceContent, getInstanceById, getAllChildInstancesForParent }) => verifyOptionsForActivatableEntry(instanceContent, getInstanceById, getAllChildInstancesForParent),
|
|
32
34
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optolith/database-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.78.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",
|