@optolith/database-schema 0.77.0 → 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 +30 -0
- package/gen/types.d.ts +299 -3
- package/lib/cache/activatableSelectOptions.d.ts +2 -2
- package/lib/cache/activatableSelectOptions.js +2 -58
- package/lib/main.js +2 -0
- package/lib/types/Attribute.js +1 -3
- package/lib/types/Culture.d.ts +1 -0
- package/lib/types/Culture.js +5 -1
- package/lib/types/DerivedCharacteristic.js +1 -3
- 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/SkillGroup.js +1 -3
- package/lib/types/SocialStatus.js +1 -0
- package/lib/types/Talisman.js +1 -1
- package/lib/types/_ActivatableSelectOptions.d.ts +10 -0
- package/lib/types/_ActivatableSelectOptions.js +40 -0
- package/lib/types/_Identifier.d.ts +2 -0
- package/lib/types/_Identifier.js +4 -0
- package/lib/types/equipment/item/BandageOrRemedy.js +1 -1
- package/lib/types/equipment/item/CeremonialItem.js +1 -1
- package/lib/types/equipment/item/Clothes.js +1 -1
- package/lib/types/equipment/item/Container.js +1 -1
- package/lib/types/equipment/item/EquipmentCategory.d.ts +121 -0
- package/lib/types/equipment/item/EquipmentCategory.js +131 -0
- package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +1 -1
- package/lib/types/equipment/item/IlluminationLightSource.js +1 -1
- package/lib/types/equipment/item/IlluminationRefillOrSupply.js +1 -1
- package/lib/types/equipment/item/Item.d.ts +287 -0
- package/lib/types/equipment/item/Item.js +167 -0
- package/lib/types/equipment/item/Liebesspielzeug.js +1 -1
- package/lib/types/equipment/item/LuxuryGood.js +1 -1
- package/lib/types/equipment/item/MagicalArtifact.js +1 -1
- package/lib/types/equipment/item/MusicalInstrument.js +1 -1
- package/lib/types/equipment/item/TravelGearOrTool.js +1 -1
- package/lib/types/equipment/item/Weapon.js +1 -1
- package/lib/types/equipment/item/WeaponAccessory.js +1 -1
- package/lib/types/equipment/item/_Item.js +1 -1
- package/lib/types/equipment/item/_Weapon.d.ts +2 -2
- package/lib/types/equipment/item/_Weapon.js +7 -4
- package/lib/types/equipment/item/sub/Reach.js +1 -3
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.js +2 -0
- package/lib/types/prerequisites/single/ActivatablePrerequisite.js +2 -0
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,36 @@
|
|
|
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
|
+
|
|
28
|
+
## [0.77.1](https://github.com/Optolith/database-schema/compare/v0.77.0...v0.77.1) (2026-10-03)
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* generic item and equipment category entities ([c154d95](https://github.com/Optolith/database-schema/commit/c154d955d161b02d8d43d13dad8a6b881a333e92))
|
|
33
|
+
* mark entities sortable by index value ([5c8dd28](https://github.com/Optolith/database-schema/commit/5c8dd28937e9176b431cb8e693e816e06fcfb8d5))
|
|
34
|
+
|
|
5
35
|
## [0.77.0](https://github.com/Optolith/database-schema/compare/v0.76.0...v0.77.0) (2026-10-01)
|
|
6
36
|
|
|
7
37
|
### ⚠ BREAKING CHANGES
|
package/gen/types.d.ts
CHANGED
|
@@ -65,6 +65,7 @@ export type EntityMap = {
|
|
|
65
65
|
Elixir: Elixir
|
|
66
66
|
ElvenMagicalSong: ElvenMagicalSong
|
|
67
67
|
Enhancement: Enhancement
|
|
68
|
+
EquipmentCategory: EquipmentCategory
|
|
68
69
|
EquipmentOfBlessedOnes: EquipmentOfBlessedOnes
|
|
69
70
|
EquipmentPackage: EquipmentPackage
|
|
70
71
|
ExperienceLevel: ExperienceLevel
|
|
@@ -91,6 +92,7 @@ export type EntityMap = {
|
|
|
91
92
|
IlluminationRefillOrSupply: IlluminationRefillOrSupply
|
|
92
93
|
Influence: Influence
|
|
93
94
|
InstrumentEnchantment: InstrumentEnchantment
|
|
95
|
+
Item: Item
|
|
94
96
|
JesterTrick: JesterTrick
|
|
95
97
|
Jewelry: Jewelry
|
|
96
98
|
KarmaSpecialAbility: KarmaSpecialAbility
|
|
@@ -317,6 +319,7 @@ export type EnumMap = {
|
|
|
317
319
|
EncumbranceInfluence: EncumbranceInfluence
|
|
318
320
|
EnhancementAdventurePoints: EnhancementAdventurePoints
|
|
319
321
|
EnhancementPrerequisiteGroup: EnhancementPrerequisiteGroup
|
|
322
|
+
EquipmentCategoryType: EquipmentCategoryType
|
|
320
323
|
EquipmentIdentifier: EquipmentIdentifier
|
|
321
324
|
ExpressionBasedParameterExpressionValue: ExpressionBasedParameterExpressionValue
|
|
322
325
|
ExpressionBasedPoisonTimeExpressionValue: ExpressionBasedPoisonTimeExpressionValue
|
|
@@ -410,6 +413,7 @@ export type EnumMap = {
|
|
|
410
413
|
ProfessionPrerequisiteGroup: ProfessionPrerequisiteGroup
|
|
411
414
|
ProfessionSpecialAbility: ProfessionSpecialAbility
|
|
412
415
|
ProfessionSpecialAbilityIdentifier: ProfessionSpecialAbilityIdentifier
|
|
416
|
+
ProfessionSpecialAbilityOption: ProfessionSpecialAbilityOption
|
|
413
417
|
PropertyDeclaration: PropertyDeclaration
|
|
414
418
|
PublicationCategory: PublicationCategory
|
|
415
419
|
PublicationPrerequisiteGroup: PublicationPrerequisiteGroup
|
|
@@ -452,6 +456,7 @@ export type EnumMap = {
|
|
|
452
456
|
SlowSkillCastingTimeUnit: SlowSkillCastingTimeUnit
|
|
453
457
|
SpecialAbilityGroup: SpecialAbilityGroup
|
|
454
458
|
SpecialAbilityIdentifier: SpecialAbilityIdentifier
|
|
459
|
+
SpecialEquipmentCategoryEntity: SpecialEquipmentCategoryEntity
|
|
455
460
|
SpecificAffectedTargetCategoryIdentifier: SpecificAffectedTargetCategoryIdentifier
|
|
456
461
|
SpecificFromSkillSelectOptionCategoryCategoryOperation: SpecificFromSkillSelectOptionCategoryCategoryOperation
|
|
457
462
|
SpellFilter: SpellFilter
|
|
@@ -470,6 +475,7 @@ export type EnumMap = {
|
|
|
470
475
|
TradeSecretSelectOptionCategory: TradeSecretSelectOptionCategory
|
|
471
476
|
TribePrerequisiteGroup: TribePrerequisiteGroup
|
|
472
477
|
ValueMapStyle: ValueMapStyle
|
|
478
|
+
ValueRule: ValueRule
|
|
473
479
|
VariantOptionAction: VariantOptionAction<unknown>
|
|
474
480
|
VariantSpecialAbilityAction: VariantSpecialAbilityAction
|
|
475
481
|
Volume: Volume
|
|
@@ -503,6 +509,7 @@ export type TypeAliasMap = {
|
|
|
503
509
|
AllApplicableCloseCombatTechniques: AllApplicableCloseCombatTechniques
|
|
504
510
|
AllApplicableCombatTechniques: AllApplicableCombatTechniques
|
|
505
511
|
AllApplicableRangedCombatTechniques: AllApplicableRangedCombatTechniques
|
|
512
|
+
AllowedCombatValues: AllowedCombatValues
|
|
506
513
|
AlternativeName: AlternativeName
|
|
507
514
|
AnimalFeed: AnimalFeed
|
|
508
515
|
AnimalPowers: AnimalPowers
|
|
@@ -596,6 +603,7 @@ export type TypeAliasMap = {
|
|
|
596
603
|
CustomDurationUnit: CustomDurationUnit
|
|
597
604
|
CustomMagicalRuneSuboption: CustomMagicalRuneSuboption
|
|
598
605
|
DaggerRitualArcaneEnergyCost: DaggerRitualArcaneEnergyCost
|
|
606
|
+
DefaultEquipmentCategoryTypeRules: DefaultEquipmentCategoryTypeRules
|
|
599
607
|
DefaultPrimaryAttributeDamageThreshold: DefaultPrimaryAttributeDamageThreshold
|
|
600
608
|
DefaultRangedDamage: DefaultRangedDamage
|
|
601
609
|
DefiniteBookCostVariant: DefiniteBookCostVariant
|
|
@@ -833,6 +841,7 @@ export type TypeAliasMap = {
|
|
|
833
841
|
ProfessionPrerequisite: ProfessionPrerequisite
|
|
834
842
|
ProfessionPrerequisites: ProfessionPrerequisites
|
|
835
843
|
ProfessionSpecialAbilitySelection: ProfessionSpecialAbilitySelection
|
|
844
|
+
ProfessionSpecialAbilitySelectionItem: ProfessionSpecialAbilitySelectionItem
|
|
836
845
|
ProfessionSpellworkIdentifier: ProfessionSpellworkIdentifier
|
|
837
846
|
ProfessionVariantPackageOptions: ProfessionVariantPackageOptions
|
|
838
847
|
ProfessionVariantPrerequisites: ProfessionVariantPrerequisites
|
|
@@ -2019,6 +2028,9 @@ export interface Locale {
|
|
|
2019
2028
|
"Animist Powers": string
|
|
2020
2029
|
"Geode Rituals": string
|
|
2021
2030
|
"Zibilja Rituals": string
|
|
2031
|
+
"Bannzeichen": string
|
|
2032
|
+
"Goblin Rituals": string
|
|
2033
|
+
"Magical Runes": string
|
|
2022
2034
|
"Mod": string
|
|
2023
2035
|
"Check Modifier": string
|
|
2024
2036
|
"spells.traditions.general": string
|
|
@@ -2690,6 +2702,10 @@ export interface Locale {
|
|
|
2690
2702
|
".input {$count :number} {{check required every {$count}. application in the same month}}": string & { __params: { "count": number } }
|
|
2691
2703
|
"see {$link}": string & { __params: { "link": string } }
|
|
2692
2704
|
"CoD": string
|
|
2705
|
+
"Search Difficulty": string
|
|
2706
|
+
"Identification Difficulty": string
|
|
2707
|
+
"Plant Applications": string
|
|
2708
|
+
"Remedies and Traditions": string
|
|
2693
2709
|
"Romance Novel": string
|
|
2694
2710
|
"Poetry": string
|
|
2695
2711
|
"Political Pamphlet": string
|
|
@@ -2782,6 +2798,8 @@ export interface Locale {
|
|
|
2782
2798
|
"Variants": string
|
|
2783
2799
|
"Languages and Literacy totaling {$apValue} AP": string & { __params: { "apValue": string } }
|
|
2784
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 } }
|
|
2785
2803
|
"Skill Specialization {$possibleSkills}": string & { __params: { "possibleSkills": string } }
|
|
2786
2804
|
"no Skill Specialization {$possibleSkills}": string & { __params: { "possibleSkills": string } }
|
|
2787
2805
|
"Skill Specialization for a {$skillOfGroup}": string & { __params: { "skillOfGroup": string } }
|
|
@@ -2808,6 +2826,7 @@ export interface Locale {
|
|
|
2808
2826
|
"except for {$list :list type=conjunction}": string & { __params: { "list": string[] } }
|
|
2809
2827
|
"depends on selected tradition": string
|
|
2810
2828
|
"Additional Prerequisites": string
|
|
2829
|
+
"no changes": string
|
|
2811
2830
|
"Enhancements": string
|
|
2812
2831
|
"SR {$value}": string & { __params: { "value": string } }
|
|
2813
2832
|
".input {$hiddenCount :number} {{Prerequisites}}": string & { __params: { "hiddenCount": number } }
|
|
@@ -4672,6 +4691,11 @@ export interface RaceTranslation {
|
|
|
4672
4691
|
*/
|
|
4673
4692
|
name: string
|
|
4674
4693
|
|
|
4694
|
+
/**
|
|
4695
|
+
* The race’s name in prerequisites, if different from the normal race’s name.
|
|
4696
|
+
*/
|
|
4697
|
+
nameInPrerequisites?: string
|
|
4698
|
+
|
|
4675
4699
|
/**
|
|
4676
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.
|
|
4677
4701
|
*/
|
|
@@ -9754,10 +9778,15 @@ export type Culture_ID = string
|
|
|
9754
9778
|
|
|
9755
9779
|
export interface CultureTranslation {
|
|
9756
9780
|
/**
|
|
9757
|
-
* The
|
|
9781
|
+
* The culture’s name.
|
|
9758
9782
|
*/
|
|
9759
9783
|
name: string
|
|
9760
9784
|
|
|
9785
|
+
/**
|
|
9786
|
+
* The culture’s name in prerequisites, if different from the normal culture’s name.
|
|
9787
|
+
*/
|
|
9788
|
+
nameInPrerequisites?: string
|
|
9789
|
+
|
|
9761
9790
|
/**
|
|
9762
9791
|
* The description of the area knowledge.
|
|
9763
9792
|
*/
|
|
@@ -10154,6 +10183,11 @@ export interface SpecificSkillSpecializationOptions {
|
|
|
10154
10183
|
* Buy languages and scripts for a specific amount of AP.
|
|
10155
10184
|
*/
|
|
10156
10185
|
export interface LanguagesScriptsOptions {
|
|
10186
|
+
/**
|
|
10187
|
+
* If scripts are included in the selection.
|
|
10188
|
+
*/
|
|
10189
|
+
includeScripts: boolean
|
|
10190
|
+
|
|
10157
10191
|
/**
|
|
10158
10192
|
* The AP value you can buy languages and scripts for.
|
|
10159
10193
|
*/
|
|
@@ -10510,7 +10544,7 @@ export interface ConstantProfessionSpecialAbility {
|
|
|
10510
10544
|
/**
|
|
10511
10545
|
* Received select options. Order is important. Typically, you only need the first array index, though.
|
|
10512
10546
|
*/
|
|
10513
|
-
options?:
|
|
10547
|
+
options?: ProfessionSpecialAbilityOption[]
|
|
10514
10548
|
}
|
|
10515
10549
|
|
|
10516
10550
|
export type ProfessionSpecialAbilityIdentifier =
|
|
@@ -18273,11 +18307,37 @@ export interface WeaponEnchantmentTranslation {
|
|
|
18273
18307
|
errata?: Errata
|
|
18274
18308
|
}
|
|
18275
18309
|
|
|
18310
|
+
export type ProfessionSpecialAbilityOption =
|
|
18311
|
+
| {
|
|
18312
|
+
kind: "Identifier"
|
|
18313
|
+
Identifier: RequirableSelectOptionIdentifier
|
|
18314
|
+
}
|
|
18315
|
+
| {
|
|
18316
|
+
kind: "Select"
|
|
18317
|
+
}
|
|
18318
|
+
|
|
18276
18319
|
export interface ProfessionSpecialAbilitySelection {
|
|
18277
18320
|
/**
|
|
18278
18321
|
* The list of special abilities to choose from. Must contain at least two entries.
|
|
18279
18322
|
*/
|
|
18280
|
-
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[]
|
|
18281
18341
|
}
|
|
18282
18342
|
|
|
18283
18343
|
export interface CombatTechniqueRating {
|
|
@@ -24228,6 +24288,126 @@ export interface ElixirEffectForEachQualityLevel {
|
|
|
24228
24288
|
qualityLevels: [string, string, string, string, string, string]
|
|
24229
24289
|
}
|
|
24230
24290
|
|
|
24291
|
+
export interface EquipmentCategory {
|
|
24292
|
+
/**
|
|
24293
|
+
* The position of the category in the list. This has to be a unique value.
|
|
24294
|
+
*/
|
|
24295
|
+
position: number
|
|
24296
|
+
|
|
24297
|
+
/**
|
|
24298
|
+
* The type of the equipment category.
|
|
24299
|
+
*/
|
|
24300
|
+
type: EquipmentCategoryType
|
|
24301
|
+
|
|
24302
|
+
/**
|
|
24303
|
+
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
24304
|
+
*/
|
|
24305
|
+
translations: {
|
|
24306
|
+
[localeId: string]: EquipmentCategoryTranslation
|
|
24307
|
+
}
|
|
24308
|
+
}
|
|
24309
|
+
|
|
24310
|
+
/**
|
|
24311
|
+
* The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
|
|
24312
|
+
*/
|
|
24313
|
+
export type EquipmentCategory_ID = string
|
|
24314
|
+
|
|
24315
|
+
export interface EquipmentCategoryTranslation {
|
|
24316
|
+
/**
|
|
24317
|
+
* The equipment category’s name.
|
|
24318
|
+
*/
|
|
24319
|
+
name: string
|
|
24320
|
+
}
|
|
24321
|
+
|
|
24322
|
+
export type EquipmentCategoryType =
|
|
24323
|
+
| {
|
|
24324
|
+
kind: "Default"
|
|
24325
|
+
Default: DefaultEquipmentCategoryTypeRules
|
|
24326
|
+
}
|
|
24327
|
+
| {
|
|
24328
|
+
kind: "Special"
|
|
24329
|
+
Special: SpecialEquipmentCategoryEntity
|
|
24330
|
+
}
|
|
24331
|
+
|
|
24332
|
+
export interface DefaultEquipmentCategoryTypeRules {
|
|
24333
|
+
/**
|
|
24334
|
+
* The combat values that are allowed for this category. If any combat value is allowed and used, advantages, disadvantages and known item specifics are also allowed to be defined for the item.
|
|
24335
|
+
*/
|
|
24336
|
+
combatValues: AllowedCombatValues
|
|
24337
|
+
|
|
24338
|
+
/**
|
|
24339
|
+
* Presence of restrictions to certain groups for items in this category.
|
|
24340
|
+
*/
|
|
24341
|
+
restrictedTo: ValueRule
|
|
24342
|
+
|
|
24343
|
+
/**
|
|
24344
|
+
* Presence of structure points to certain groups for items in this category.
|
|
24345
|
+
*/
|
|
24346
|
+
structurePoints: ValueRule
|
|
24347
|
+
|
|
24348
|
+
/**
|
|
24349
|
+
* Presence of weight to certain groups for items in this category.
|
|
24350
|
+
*/
|
|
24351
|
+
weight: ValueRule
|
|
24352
|
+
|
|
24353
|
+
/**
|
|
24354
|
+
* Presence of complexity to certain groups for items in this category.
|
|
24355
|
+
*/
|
|
24356
|
+
complexity: ValueRule
|
|
24357
|
+
}
|
|
24358
|
+
|
|
24359
|
+
/**
|
|
24360
|
+
* The combat values that are allowed for this category. If any combat value is allowed and used, advantages, disadvantages and known item specifics are also allowed to be defined for the item.
|
|
24361
|
+
*/
|
|
24362
|
+
export interface AllowedCombatValues {
|
|
24363
|
+
/**
|
|
24364
|
+
* Is the item allowed to be used as a weapon?
|
|
24365
|
+
*/
|
|
24366
|
+
isWeaponAllowed: boolean
|
|
24367
|
+
|
|
24368
|
+
/**
|
|
24369
|
+
* Is the item allowed to be used as an armor?
|
|
24370
|
+
*/
|
|
24371
|
+
isArmorAllowed: boolean
|
|
24372
|
+
}
|
|
24373
|
+
|
|
24374
|
+
/**
|
|
24375
|
+
* Defines if an instance MUST/CAN/MUST NOT define a value for this parameter. If multiple rules apply to the same parameter, the order of precedence is Required > Optional > Prohibited.
|
|
24376
|
+
*/
|
|
24377
|
+
export type ValueRule =
|
|
24378
|
+
| {
|
|
24379
|
+
kind: "Required"
|
|
24380
|
+
}
|
|
24381
|
+
| {
|
|
24382
|
+
kind: "Optional"
|
|
24383
|
+
}
|
|
24384
|
+
| {
|
|
24385
|
+
kind: "Prohibited"
|
|
24386
|
+
}
|
|
24387
|
+
|
|
24388
|
+
export type SpecialEquipmentCategoryEntity =
|
|
24389
|
+
| {
|
|
24390
|
+
kind: "AnimalCare"
|
|
24391
|
+
}
|
|
24392
|
+
| {
|
|
24393
|
+
kind: "Book"
|
|
24394
|
+
}
|
|
24395
|
+
| {
|
|
24396
|
+
kind: "Elixir"
|
|
24397
|
+
}
|
|
24398
|
+
| {
|
|
24399
|
+
kind: "GemOrPreciousStone"
|
|
24400
|
+
}
|
|
24401
|
+
| {
|
|
24402
|
+
kind: "Newspaper"
|
|
24403
|
+
}
|
|
24404
|
+
| {
|
|
24405
|
+
kind: "Poison"
|
|
24406
|
+
}
|
|
24407
|
+
| {
|
|
24408
|
+
kind: "WorkingSupernaturalCreature"
|
|
24409
|
+
}
|
|
24410
|
+
|
|
24231
24411
|
export interface EquipmentOfBlessedOnes {
|
|
24232
24412
|
/**
|
|
24233
24413
|
* The cost in silverthalers.
|
|
@@ -26132,6 +26312,122 @@ export interface HomunculusTypeTranslation {
|
|
|
26132
26312
|
name: string
|
|
26133
26313
|
}
|
|
26134
26314
|
|
|
26315
|
+
export interface Item {
|
|
26316
|
+
/**
|
|
26317
|
+
* The categories this item belongs to.
|
|
26318
|
+
*/
|
|
26319
|
+
categories: EquipmentCategory_ID[]
|
|
26320
|
+
|
|
26321
|
+
/**
|
|
26322
|
+
* The cost in silverthalers.
|
|
26323
|
+
*/
|
|
26324
|
+
cost: Cost
|
|
26325
|
+
|
|
26326
|
+
/**
|
|
26327
|
+
* The weight in kg.
|
|
26328
|
+
*/
|
|
26329
|
+
weight: Weight
|
|
26330
|
+
|
|
26331
|
+
/**
|
|
26332
|
+
* The complexity of crafting the item.
|
|
26333
|
+
*/
|
|
26334
|
+
complexity?: Complexity
|
|
26335
|
+
|
|
26336
|
+
/**
|
|
26337
|
+
* The structure points of the item. Use an array if the item consists of multiple components that have individual structure points.
|
|
26338
|
+
*/
|
|
26339
|
+
structurePoints: StructurePoints
|
|
26340
|
+
|
|
26341
|
+
/**
|
|
26342
|
+
* A list of stat blocks for each close combat technique this weapon can be used with.
|
|
26343
|
+
*/
|
|
26344
|
+
meleeUses?: {
|
|
26345
|
+
[closeCombatTechniqueId: string]: MeleeWeaponUse2
|
|
26346
|
+
}
|
|
26347
|
+
|
|
26348
|
+
/**
|
|
26349
|
+
* A list of stat blocks for each ranged combat technique this weapon can be used with.
|
|
26350
|
+
*/
|
|
26351
|
+
rangedUses?: {
|
|
26352
|
+
[rangedCombatTechniqueId: string]: RangedWeaponUse2
|
|
26353
|
+
}
|
|
26354
|
+
|
|
26355
|
+
/**
|
|
26356
|
+
* Stats for this item being used as an armor.
|
|
26357
|
+
*/
|
|
26358
|
+
armorUse?: SecondaryArmor
|
|
26359
|
+
|
|
26360
|
+
/**
|
|
26361
|
+
* Define if during character creation this weapon can only be bought by a specific subset of characters.
|
|
26362
|
+
*/
|
|
26363
|
+
restrictedTo?: RestrictedTo
|
|
26364
|
+
|
|
26365
|
+
/**
|
|
26366
|
+
* The weapon is a known item, which implies some additional values.
|
|
26367
|
+
*/
|
|
26368
|
+
knownItemSpecifics?: KnownItemSpecifics
|
|
26369
|
+
|
|
26370
|
+
/**
|
|
26371
|
+
* References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
|
|
26372
|
+
*/
|
|
26373
|
+
src: PublicationRefs
|
|
26374
|
+
|
|
26375
|
+
/**
|
|
26376
|
+
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
26377
|
+
*/
|
|
26378
|
+
translations: {
|
|
26379
|
+
[localeId: string]: ItemTranslation
|
|
26380
|
+
}
|
|
26381
|
+
}
|
|
26382
|
+
|
|
26383
|
+
/**
|
|
26384
|
+
* The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
|
|
26385
|
+
*/
|
|
26386
|
+
export type Item_ID = string
|
|
26387
|
+
|
|
26388
|
+
export type MeleeWeaponUse2 = MeleeWeapon
|
|
26389
|
+
|
|
26390
|
+
export type RangedWeaponUse2 = RangedWeapon
|
|
26391
|
+
|
|
26392
|
+
export interface ItemTranslation {
|
|
26393
|
+
/**
|
|
26394
|
+
* The item’s name.
|
|
26395
|
+
*/
|
|
26396
|
+
name: string
|
|
26397
|
+
|
|
26398
|
+
/**
|
|
26399
|
+
* An auxiliary name or label of the item, if available.
|
|
26400
|
+
*/
|
|
26401
|
+
secondaryName?: string
|
|
26402
|
+
|
|
26403
|
+
/**
|
|
26404
|
+
* Note text.
|
|
26405
|
+
*/
|
|
26406
|
+
note?: string
|
|
26407
|
+
|
|
26408
|
+
/**
|
|
26409
|
+
* Special rules text.
|
|
26410
|
+
*/
|
|
26411
|
+
rules?: string
|
|
26412
|
+
|
|
26413
|
+
/**
|
|
26414
|
+
* The weapon advantage text.
|
|
26415
|
+
*/
|
|
26416
|
+
advantage?: string
|
|
26417
|
+
|
|
26418
|
+
/**
|
|
26419
|
+
* The weapon disadvantage text.
|
|
26420
|
+
*/
|
|
26421
|
+
disadvantage?: string
|
|
26422
|
+
|
|
26423
|
+
/**
|
|
26424
|
+
* The weapon is a known item, which implies some additional values.
|
|
26425
|
+
*/
|
|
26426
|
+
knownItemSpecifics?: KnownItemSpecificsTranslation
|
|
26427
|
+
|
|
26428
|
+
errata?: Errata
|
|
26429
|
+
}
|
|
26430
|
+
|
|
26135
26431
|
/**
|
|
26136
26432
|
* Meta Conditions are rule elements that work like conditions in the sense that they have four levels with different effects, but which are not explicitly listed as conditions.
|
|
26137
26433
|
*/
|
|
@@ -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/main.js
CHANGED
|
@@ -63,6 +63,7 @@ export const schema = new Schema([
|
|
|
63
63
|
Types.Element,
|
|
64
64
|
Types.Elixir,
|
|
65
65
|
Types.ElvenMagicalSong,
|
|
66
|
+
Types.EquipmentCategory,
|
|
66
67
|
Types.EquipmentOfBlessedOnes,
|
|
67
68
|
Types.EquipmentPackage,
|
|
68
69
|
Types.ExperienceLevel,
|
|
@@ -87,6 +88,7 @@ export const schema = new Schema([
|
|
|
87
88
|
Types.IlluminationLightSource,
|
|
88
89
|
Types.IlluminationRefillOrSupply,
|
|
89
90
|
Types.InstrumentEnchantment,
|
|
91
|
+
Types.Item,
|
|
90
92
|
Types.JesterTrick,
|
|
91
93
|
Types.Jewelry,
|
|
92
94
|
Types.KarmaSpecialAbility,
|
package/lib/types/Attribute.js
CHANGED
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({
|
|
@@ -48,9 +48,7 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
|
|
|
48
48
|
})),
|
|
49
49
|
}),
|
|
50
50
|
instanceDisplayName: {},
|
|
51
|
-
sortOrder: {
|
|
52
|
-
keyPath: "position",
|
|
53
|
-
},
|
|
51
|
+
sortOrder: { keyPath: "position", isIndex: true },
|
|
54
52
|
uniqueConstraints: [
|
|
55
53
|
{
|
|
56
54
|
keyPath: "position",
|
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;
|