@optolith/database-schema 0.111.1 → 0.113.1

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/gen/types.d.ts +54 -3
  3. package/lib/cache/activatableSelectOptions.js +16 -16
  4. package/lib/cache/newApplicationsAndUses.d.ts +3 -1
  5. package/lib/cache/newApplicationsAndUses.js +15 -7
  6. package/lib/types/Settings.d.ts +122 -0
  7. package/lib/types/Settings.js +27 -1
  8. package/lib/types/Skill.js +5 -5
  9. package/lib/types/equipment/item/Armor.d.ts +19 -4
  10. package/lib/types/equipment/item/Armor.js +22 -3
  11. package/lib/types/equipment/item/ArmorAccessory.d.ts +6 -1
  12. package/lib/types/equipment/item/BandageOrRemedy.d.ts +6 -1
  13. package/lib/types/equipment/item/CeremonialItem.d.ts +6 -1
  14. package/lib/types/equipment/item/Clothes.d.ts +6 -1
  15. package/lib/types/equipment/item/Container.d.ts +6 -1
  16. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +6 -1
  17. package/lib/types/equipment/item/IlluminationLightSource.d.ts +6 -1
  18. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +6 -1
  19. package/lib/types/equipment/item/Item.d.ts +6 -1
  20. package/lib/types/equipment/item/Liebesspielzeug.d.ts +6 -1
  21. package/lib/types/equipment/item/LuxuryGood.d.ts +6 -1
  22. package/lib/types/equipment/item/MagicalArtifact.d.ts +6 -1
  23. package/lib/types/equipment/item/MusicalInstrument.d.ts +6 -1
  24. package/lib/types/equipment/item/OrienteeringAid.d.ts +6 -1
  25. package/lib/types/equipment/item/RopeOrChain.d.ts +6 -1
  26. package/lib/types/equipment/item/Stationery.d.ts +6 -1
  27. package/lib/types/equipment/item/ThievesTool.d.ts +6 -1
  28. package/lib/types/equipment/item/TravelGearOrTool.d.ts +6 -1
  29. package/lib/types/equipment/item/WeaponAccessory.d.ts +6 -1
  30. package/lib/types/equipment/item/_Item.d.ts +12 -2
  31. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
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.113.1](https://github.com/Optolith/database-schema/compare/v0.113.0...v0.113.1) (2026-10-26)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **cache:** missing sources for derived select options ([68347f2](https://github.com/Optolith/database-schema/commit/68347f21f6adfc62b4c755b4bc1ad5b8db0a543e))
10
+
11
+ ## [0.113.0](https://github.com/Optolith/database-schema/compare/v0.112.0...v0.113.0) (2026-10-26)
12
+
13
+ ### ⚠ BREAKING CHANGES
14
+
15
+ * pin enhancement focus rules in settings
16
+
17
+ ### Features
18
+
19
+ * **cache:** include parent source refs in new applications and uses ([26a0c1a](https://github.com/Optolith/database-schema/commit/26a0c1a959dd7c5ced909cee03a13be67174cc5b))
20
+ * pin enhancement focus rules in settings ([711a7d5](https://github.com/Optolith/database-schema/commit/711a7d5ac1f008e0d684cb4a8e94c7c9209eae8a))
21
+
22
+ ## [0.112.0](https://github.com/Optolith/database-schema/compare/v0.111.1...v0.112.0) (2026-10-24)
23
+
24
+ ### ⚠ BREAKING CHANGES
25
+
26
+ * custom additional penalties
27
+ * define skill and combat technique rating bonus entries
28
+ * optional armor weight
29
+
30
+ ### Features
31
+
32
+ * custom additional penalties ([1c56824](https://github.com/Optolith/database-schema/commit/1c56824e11b36a9fdbc3b6cb57588dc0a684358e))
33
+ * define skill and combat technique rating bonus entries ([efe4a54](https://github.com/Optolith/database-schema/commit/efe4a549c01e4ee4ed8710f6447059a5b60cd0b9))
34
+ * optional armor weight ([35729c4](https://github.com/Optolith/database-schema/commit/35729c42a7dd7152be8c3146032a5e42a7ea915a))
35
+
36
+ ### Bug Fixes
37
+
38
+ * skill descriptions support markdown ([1aeb838](https://github.com/Optolith/database-schema/commit/1aeb838e43bde7a31b8f34ff965b3e06ae3d2c82))
39
+
5
40
  ## [0.111.1](https://github.com/Optolith/database-schema/compare/v0.111.0...v0.111.1) (2026-10-18)
6
41
 
7
42
  ## [0.111.0](https://github.com/Optolith/database-schema/compare/v0.110.1...v0.111.0) (2026-10-18)
package/gen/types.d.ts CHANGED
@@ -362,6 +362,7 @@ export type EnumMap = {
362
362
  GoblinRitualPerformanceParameters: GoblinRitualPerformanceParameters
363
363
  GoblinRitualRangeValue: GoblinRitualRangeValue
364
364
  GradientColor: GradientColor
365
+ HasAdditionalPenalties: HasAdditionalPenalties
365
366
  HerbalAidCombatUse: HerbalAidCombatUse
366
367
  HerbalPreservationLongevity: HerbalPreservationLongevity
367
368
  HerbalPreservationLongevityValue: HerbalPreservationLongevityValue
@@ -645,6 +646,7 @@ export type TypeAliasMap = {
645
646
  CursesOptions: CursesOptions
646
647
  CustomBannzeichenSuboption: CustomBannzeichenSuboption
647
648
  CustomDurationUnit: CustomDurationUnit
649
+ CustomHasAdditionalPenalties: CustomHasAdditionalPenalties
648
650
  CustomMagicalRuneSuboption: CustomMagicalRuneSuboption
649
651
  DaggerRitualArcaneEnergyCost: DaggerRitualArcaneEnergyCost
650
652
  DefaultEquipmentCategoryTypeRules: DefaultEquipmentCategoryTypeRules
@@ -684,6 +686,7 @@ export type TypeAliasMap = {
684
686
  EnergyType: EnergyType
685
687
  EnhancementPrerequisite: EnhancementPrerequisite
686
688
  EnhancementPrerequisites: EnhancementPrerequisites
689
+ EnhancementsSettings: EnhancementsSettings
687
690
  EquipmentPackageItem: EquipmentPackageItem
688
691
  EquipmentPrerequisites: EquipmentPrerequisites
689
692
  Errata: Errata
@@ -745,7 +748,6 @@ export type TypeAliasMap = {
745
748
  GoblinRitualSustainedCost: GoblinRitualSustainedCost
746
749
  GoblinRitualSustainedPerformanceParameters: GoblinRitualSustainedPerformanceParameters
747
750
  GroupedCommonProfessions: GroupedCommonProfessions
748
- HasAdditionalPenalties: HasAdditionalPenalties
749
751
  HeadHitZone: HeadHitZone
750
752
  HeadHitZoneCombinationPossibilities: HeadHitZoneCombinationPossibilities
751
753
  HerbalAidRecipe: HerbalAidRecipe
@@ -24228,7 +24230,7 @@ export interface Armor {
24228
24230
  /**
24229
24231
  * The weight in kg.
24230
24232
  */
24231
- weight: Weight
24233
+ weight?: Weight
24232
24234
 
24233
24235
  /**
24234
24236
  * The complexity of crafting the item.
@@ -24363,7 +24365,26 @@ export type Encumbrance = number
24363
24365
  /**
24364
24366
  * Does the armor have additional penalties (MOV -1, INI -1)?
24365
24367
  */
24366
- export type HasAdditionalPenalties = boolean
24368
+ export type HasAdditionalPenalties =
24369
+ | {
24370
+ kind: "Standard"
24371
+ Standard: boolean
24372
+ }
24373
+ | {
24374
+ kind: "Custom"
24375
+ Custom: CustomHasAdditionalPenalties
24376
+ }
24377
+
24378
+ export type CustomHasAdditionalPenalties = {
24379
+ [derivedCharacteristicId: string]: CustomAdditionalPenalty
24380
+ }
24381
+
24382
+ export interface CustomAdditionalPenalty {
24383
+ /**
24384
+ * The value of the additional penalty.
24385
+ */
24386
+ value: number
24387
+ }
24367
24388
 
24368
24389
  /**
24369
24390
  * The armor type.
@@ -29240,10 +29261,25 @@ export interface Settings {
29240
29261
  */
29241
29262
  styles: StyleSpecialAbilitySettings
29242
29263
 
29264
+ /**
29265
+ * Spell and Liturgical Chant Enhancements are part of focus rules. This type defines which focus rule must be enabled in order to use an enhancement. Essentially, this is a default prerequisite they must meet, but manually inserting them with every enhancement is a lot of work and error-prone. Therefore, in order to use an enhancement, prerequisites for the respective focus rule must be generated for every entry.
29266
+ */
29267
+ enhancements: EnhancementsSettings
29268
+
29243
29269
  /**
29244
29270
  * The publication that extends the description of books with additional information.
29245
29271
  */
29246
29272
  extendedBookDescriptionPublication: Publication_ID
29273
+
29274
+ /**
29275
+ * The entry that grants a bonus of 1 towards the maximum skill rating per selection.
29276
+ */
29277
+ maximumSkillRatingBonusEntry: ActivatableIdentifier
29278
+
29279
+ /**
29280
+ * The entry that grants a bonus of 1 towards the maximum skill rating per selection.
29281
+ */
29282
+ maximumCombatTechniqueRatingBonusEntry: ActivatableIdentifier
29247
29283
  }
29248
29284
 
29249
29285
  /**
@@ -29311,6 +29347,21 @@ export interface StyleSpecialAbilitySettings {
29311
29347
  liturgical: FocusRule_ID
29312
29348
  }
29313
29349
 
29350
+ /**
29351
+ * Spell and Liturgical Chant Enhancements are part of focus rules. This type defines which focus rule must be enabled in order to use an enhancement. Essentially, this is a default prerequisite they must meet, but manually inserting them with every enhancement is a lot of work and error-prone. Therefore, in order to use an enhancement, prerequisites for the respective focus rule must be generated for every entry.
29352
+ */
29353
+ export interface EnhancementsSettings {
29354
+ /**
29355
+ * The focus rule for spell enhancements.
29356
+ */
29357
+ spell: FocusRule_ID
29358
+
29359
+ /**
29360
+ * The focus rule for liturgical chant enhancements.
29361
+ */
29362
+ liturgicalChant: FocusRule_ID
29363
+ }
29364
+
29314
29365
  export interface SexPractice {
29315
29366
  /**
29316
29367
  * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
@@ -102,11 +102,12 @@ const getApValueForSkillish = (config, id, ic) => {
102
102
  return assertExhaustive(config);
103
103
  }
104
104
  };
105
- const convertSkillApplicationOrUse = (entryId, id, applicationOrUse) => ({
105
+ const convertSkillApplicationOrUse = (entryId, id, applicationOrUse, src) => ({
106
106
  id: `${fromUniformCase(entryId)}+${applicationOrUse.id.toFixed()}`,
107
107
  content: {
108
108
  parent: entryId,
109
109
  skills: [id],
110
+ src,
110
111
  translations: applicationOrUse.translations,
111
112
  },
112
113
  });
@@ -131,7 +132,7 @@ const getSpellworkFilter = (category) => {
131
132
  }
132
133
  });
133
134
  };
134
- const getDerivedSkillishSelectOptions = (database, entryId, entity, category, options, filter) => {
135
+ const getDerivedSkillishSelectOptions = (database, entryId, entity, category, options, filter, parentSrc) => {
135
136
  const { prerequisites } = category;
136
137
  const { bindingCost, ap_value } = options;
137
138
  const instances = database.getAllInstanceContainersOfEntity(entity);
@@ -150,13 +151,12 @@ const getDerivedSkillishSelectOptions = (database, entryId, entity, category, op
150
151
  name: t10n.name,
151
152
  })),
152
153
  },
153
- newApplications: category.skill_applications?.map(app => convertSkillApplicationOrUse(entryId, id, app)) ??
154
- [],
155
- uses: category.skill_uses?.map(use => convertSkillApplicationOrUse(entryId, id, use)) ?? [],
154
+ newApplications: category.skill_applications?.map(app => convertSkillApplicationOrUse(entryId, id, app, parentSrc)) ?? [],
155
+ uses: category.skill_uses?.map(use => convertSkillApplicationOrUse(entryId, id, use, parentSrc)) ?? [],
156
156
  };
157
157
  });
158
158
  };
159
- const getDerivedSelectOptions = (selectOptionCategory, entryId, database) => {
159
+ const getDerivedSelectOptions = (selectOptionCategory, entryId, database, parentSrc) => {
160
160
  switch (selectOptionCategory.kind) {
161
161
  case "Blessings":
162
162
  return database
@@ -685,15 +685,15 @@ const getDerivedSelectOptions = (selectOptionCategory, entryId, database) => {
685
685
  const matchesIdRequirement = category.Skills.specific === undefined ||
686
686
  matchesSpecificSkillishIdList(category.Skills.specific, required => required === id);
687
687
  return matchesGroupRequirement && matchesIdRequirement;
688
- });
688
+ }, parentSrc);
689
689
  case "Spells":
690
- return getDerivedSkillishSelectOptions(database, entryId, "Spell", category.Spells, selectOptionCategory.Skills, getSpellworkFilter(category.Spells));
690
+ return getDerivedSkillishSelectOptions(database, entryId, "Spell", category.Spells, selectOptionCategory.Skills, getSpellworkFilter(category.Spells), parentSrc);
691
691
  case "Rituals":
692
- return getDerivedSkillishSelectOptions(database, entryId, "Ritual", category.Rituals, selectOptionCategory.Skills, getSpellworkFilter(category.Rituals));
692
+ return getDerivedSkillishSelectOptions(database, entryId, "Ritual", category.Rituals, selectOptionCategory.Skills, getSpellworkFilter(category.Rituals), parentSrc);
693
693
  case "LiturgicalChants":
694
- return getDerivedSkillishSelectOptions(database, entryId, "LiturgicalChant", category.LiturgicalChants, selectOptionCategory.Skills, getDefaultSkillishFilter(category.LiturgicalChants));
694
+ return getDerivedSkillishSelectOptions(database, entryId, "LiturgicalChant", category.LiturgicalChants, selectOptionCategory.Skills, getDefaultSkillishFilter(category.LiturgicalChants), parentSrc);
695
695
  case "Ceremonies":
696
- return getDerivedSkillishSelectOptions(database, entryId, "Ceremony", category.Ceremonies, selectOptionCategory.Skills, getDefaultSkillishFilter(category.Ceremonies));
696
+ return getDerivedSkillishSelectOptions(database, entryId, "Ceremony", category.Ceremonies, selectOptionCategory.Skills, getDefaultSkillishFilter(category.Ceremonies), parentSrc);
697
697
  default:
698
698
  return assertExhaustive(category);
699
699
  }
@@ -702,9 +702,9 @@ const getDerivedSelectOptions = (selectOptionCategory, entryId, database) => {
702
702
  return selectOptionCategory.CombatTechniques.categories.flatMap(category => {
703
703
  switch (category.kind) {
704
704
  case "CloseCombatTechniques":
705
- return getDerivedSkillishSelectOptions(database, entryId, "CloseCombatTechnique", category.CloseCombatTechniques, selectOptionCategory.CombatTechniques, getDefaultSkillishFilter(category.CloseCombatTechniques));
705
+ return getDerivedSkillishSelectOptions(database, entryId, "CloseCombatTechnique", category.CloseCombatTechniques, selectOptionCategory.CombatTechniques, getDefaultSkillishFilter(category.CloseCombatTechniques), parentSrc);
706
706
  case "RangedCombatTechniques":
707
- return getDerivedSkillishSelectOptions(database, entryId, "RangedCombatTechnique", category.RangedCombatTechniques, selectOptionCategory.CombatTechniques, getDefaultSkillishFilter(category.RangedCombatTechniques));
707
+ return getDerivedSkillishSelectOptions(database, entryId, "RangedCombatTechnique", category.RangedCombatTechniques, selectOptionCategory.CombatTechniques, getDefaultSkillishFilter(category.RangedCombatTechniques), parentSrc);
708
708
  default:
709
709
  return assertExhaustive(category);
710
710
  }
@@ -787,14 +787,14 @@ const getExplicitSelectOptions = (id, database) => database
787
787
  newApplications: [], // database.getAllChildInstanceContainersForParent("NewSkillApplication", Case("GeneralSelectOption", id)), // prevent duplicates as these can already be queried from the database
788
788
  uses: [], // database.getAllChildInstanceContainersForParent("SkillUse", Case("GeneralSelectOption", id)), // prevent duplicates as these can already be queried from the database
789
789
  }));
790
- const getSelectOptions = (selectOptions, id, database) => [
790
+ const getSelectOptions = (selectOptions, id, database, parentSrc) => [
791
791
  ...(selectOptions.derived === undefined
792
792
  ? []
793
- : getDerivedSelectOptions(selectOptions.derived, id, database)),
793
+ : getDerivedSelectOptions(selectOptions.derived, id, database, parentSrc)),
794
794
  ...getExplicitSelectOptions(id, database),
795
795
  ];
796
796
  const getSelectOptionsForResults = (database, entity, results) => results.reduce((acc, { id, content }) => {
797
- const options = getSelectOptions(content.select_options ?? {}, Case(entity, id), database);
797
+ const options = getSelectOptions(content.select_options ?? {}, Case(entity, id), database, content.src);
798
798
  if (options.length > 0) {
799
799
  acc[id] = options;
800
800
  }
@@ -1,16 +1,18 @@
1
- import type { ActivatableIdentifier, NewSkillApplication, NewSkillApplicationOrUseParentIdentifier, Skill_ID, SkillUse } from "../../gen/types.js";
1
+ import type { ActivatableIdentifier, NewSkillApplication, NewSkillApplicationOrUseParentIdentifier, PublicationRefs, Skill_ID, SkillUse } from "../../gen/types.js";
2
2
  import type { ActivatableSelectOptionsCache } from "./activatableSelectOptions.ts";
3
3
  import type { CacheBuilder } from "./internal.ts";
4
4
  export type ResolvedNewSkillApplication = {
5
5
  id: string;
6
6
  content: Omit<NewSkillApplication, "parent"> & {
7
7
  parent: NewSkillApplicationOrUseParentIdentifier | ActivatableIdentifier;
8
+ src: PublicationRefs | undefined;
8
9
  };
9
10
  };
10
11
  export type ResolvedSkillUse = {
11
12
  id: string;
12
13
  content: Omit<SkillUse, "parent"> & {
13
14
  parent: NewSkillApplicationOrUseParentIdentifier | ActivatableIdentifier;
15
+ src: PublicationRefs | undefined;
14
16
  };
15
17
  };
16
18
  export type NewApplicationsAndUsesCache = {
@@ -1,15 +1,23 @@
1
- const groupByAffectedSkill = (entries, prev = {}) => entries.reduce((acc, entry) => entry.content.skills.reduce((acc1, skillId) => {
1
+ const groupByAffectedSkill = (database, entries, prev = {}) => entries
2
+ .map(entry => ({
3
+ ...entry,
4
+ content: {
5
+ ...entry.content,
6
+ src: database.getInstanceOfEntityById(entry.content.parent)?.src,
7
+ },
8
+ }))
9
+ .reduce((acc, entry) => entry.content.skills.reduce((acc1, skillId) => {
2
10
  acc1[skillId] = [...(acc1[skillId] ?? []), entry];
3
11
  return acc1;
4
12
  }, acc), prev);
5
- const addGeneratedEntries = (generatedSelectOptions, prev) => Object.values(generatedSelectOptions).reduce((acc, byInstance) => Object.values(byInstance).reduce((acc1, resolvedSelectOptions) => resolvedSelectOptions.reduce((acc2, selectOption) => ({
6
- newApplications: groupByAffectedSkill(selectOption.newApplications, acc2.newApplications),
7
- uses: groupByAffectedSkill(selectOption.uses, acc2.uses),
13
+ const addGeneratedEntries = (database, generatedSelectOptions, prev) => Object.values(generatedSelectOptions).reduce((acc, byInstance) => Object.values(byInstance).reduce((acc1, resolvedSelectOptions) => resolvedSelectOptions.reduce((acc2, selectOption) => ({
14
+ newApplications: groupByAffectedSkill(database, selectOption.newApplications, acc2.newApplications),
15
+ uses: groupByAffectedSkill(database, selectOption.uses, acc2.uses),
8
16
  }), acc1), acc), prev);
9
17
  export const buildNewApplicationsAndUsesCache = (database, _idMap, generatedSelectOptions) => {
10
18
  const cache = {
11
- newApplications: groupByAffectedSkill(database.getAllInstanceContainersOfEntity("NewSkillApplication")),
12
- uses: groupByAffectedSkill(database.getAllInstanceContainersOfEntity("SkillUse")),
19
+ newApplications: groupByAffectedSkill(database, database.getAllInstanceContainersOfEntity("NewSkillApplication")),
20
+ uses: groupByAffectedSkill(database, database.getAllInstanceContainersOfEntity("SkillUse")),
13
21
  };
14
- return addGeneratedEntries(generatedSelectOptions, cache);
22
+ return addGeneratedEntries(database, generatedSelectOptions, cache);
15
23
  };
@@ -186,5 +186,127 @@ export declare const Settings: DB.SingletonEntity<"Settings", {
186
186
  magic: DB.MemberDecl<DB.ReferenceIdentifier, true>;
187
187
  liturgical: DB.MemberDecl<DB.ReferenceIdentifier, true>;
188
188
  }>, []>>, true>;
189
+ enhancements: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementsSettings", DB.Object<{
190
+ spell: DB.MemberDecl<DB.ReferenceIdentifier, true>;
191
+ liturgicalChant: DB.MemberDecl<DB.ReferenceIdentifier, true>;
192
+ }>, []>>, true>;
189
193
  extendedBookDescriptionPublication: DB.MemberDecl<DB.ReferenceIdentifier, true>;
194
+ maximumSkillRatingBonusEntry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableIdentifier", {
195
+ Adoruzepterzauber: DB.EnumCase<DB.ReferenceIdentifier>;
196
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
197
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
198
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
199
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
200
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
201
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
202
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
203
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
204
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
205
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
206
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
207
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
208
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
209
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
210
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
211
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
212
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
213
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
214
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
215
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
216
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
217
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
218
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
219
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
220
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
221
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
222
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
223
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
224
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
225
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
226
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
227
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
228
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
229
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
230
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
231
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
232
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
233
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
234
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
235
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
236
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
237
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
238
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
239
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
240
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
241
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
242
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
243
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
244
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
245
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
246
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
247
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
248
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
249
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
250
+ Advantage: DB.EnumCase<DB.ReferenceIdentifier>;
251
+ Disadvantage: DB.EnumCase<DB.ReferenceIdentifier>;
252
+ }, []>>, true>;
253
+ maximumCombatTechniqueRatingBonusEntry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableIdentifier", {
254
+ Adoruzepterzauber: DB.EnumCase<DB.ReferenceIdentifier>;
255
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
256
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
257
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
258
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
259
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
260
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
261
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
262
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
263
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
264
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
265
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
266
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
267
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
268
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
269
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
270
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
271
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
272
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
273
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
274
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
275
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
276
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
277
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
278
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
279
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
280
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
281
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
282
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
283
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
284
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
285
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
286
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
287
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
288
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
289
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
290
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
291
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
292
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
293
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
294
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
295
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
296
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
297
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
298
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
299
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
300
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
301
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
302
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
303
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
304
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
305
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
306
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
307
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
308
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
309
+ Advantage: DB.EnumCase<DB.ReferenceIdentifier>;
310
+ Disadvantage: DB.EnumCase<DB.ReferenceIdentifier>;
311
+ }, []>>, true>;
190
312
  }>;
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { AdvantageIdentifier, DerivedCharacteristicIdentifier, ExperienceLevelIdentifier, FocusRuleIdentifier, PublicationIdentifier, } from "./_Identifier.js";
3
- import { SpecialAbilityIdentifier } from "./_IdentifierGroup.js";
3
+ import { ActivatableIdentifier, SpecialAbilityIdentifier } from "./_IdentifierGroup.js";
4
4
  export const Settings = DB.SingletonEntity(import.meta.url, {
5
5
  name: "Settings",
6
6
  type: () => DB.Object({
@@ -27,10 +27,22 @@ export const Settings = DB.SingletonEntity(import.meta.url, {
27
27
  comment: StyleSpecialAbilitySettings.comment,
28
28
  type: DB.IncludeIdentifier(StyleSpecialAbilitySettings),
29
29
  }),
30
+ enhancements: DB.Required({
31
+ comment: EnhancementsSettings.comment,
32
+ type: DB.IncludeIdentifier(EnhancementsSettings),
33
+ }),
30
34
  extendedBookDescriptionPublication: DB.Required({
31
35
  comment: "The publication that extends the description of books with additional information.",
32
36
  type: PublicationIdentifier(),
33
37
  }),
38
+ maximumSkillRatingBonusEntry: DB.Required({
39
+ comment: "The entry that grants a bonus of 1 towards the maximum skill rating per selection.",
40
+ type: DB.IncludeIdentifier(ActivatableIdentifier),
41
+ }),
42
+ maximumCombatTechniqueRatingBonusEntry: DB.Required({
43
+ comment: "The entry that grants a bonus of 1 towards the maximum skill rating per selection.",
44
+ type: DB.IncludeIdentifier(ActivatableIdentifier),
45
+ }),
34
46
  }),
35
47
  });
36
48
  const SupernaturalBaseAdvantageSettings = DB.TypeAlias(import.meta.url, {
@@ -95,3 +107,17 @@ const StyleSpecialAbilitySettings = DB.TypeAlias(import.meta.url, {
95
107
  }),
96
108
  }),
97
109
  });
110
+ const EnhancementsSettings = DB.TypeAlias(import.meta.url, {
111
+ name: "EnhancementsSettings",
112
+ comment: "Spell and Liturgical Chant Enhancements are part of focus rules. This type defines which focus rule must be enabled in order to use an enhancement. Essentially, this is a default prerequisite they must meet, but manually inserting them with every enhancement is a lot of work and error-prone. Therefore, in order to use an enhancement, prerequisites for the respective focus rule must be generated for every entry.",
113
+ type: () => DB.Object({
114
+ spell: DB.Required({
115
+ comment: "The focus rule for spell enhancements.",
116
+ type: FocusRuleIdentifier(),
117
+ }),
118
+ liturgicalChant: DB.Required({
119
+ comment: "The focus rule for liturgical chant enhancements.",
120
+ type: FocusRuleIdentifier(),
121
+ }),
122
+ }),
123
+ });
@@ -48,23 +48,23 @@ export const Skill = DB.Entity(import.meta.url, {
48
48
  }),
49
49
  tools: DB.Optional({
50
50
  comment: "Mentions any tools from the equipment list that are necessary to employ the skill.",
51
- type: DB.String({ minLength: 1 }),
51
+ type: DB.String({ minLength: 1, markdown: "inline" }),
52
52
  }),
53
53
  quality: DB.Required({
54
54
  comment: "Gives examples of the effects that various QL might provide.",
55
- type: DB.String({ minLength: 1 }),
55
+ type: DB.String({ minLength: 1, markdown: "inline" }),
56
56
  }),
57
57
  failed: DB.Required({
58
58
  comment: "Lists examples of results for a failed check.",
59
- type: DB.String({ minLength: 1 }),
59
+ type: DB.String({ minLength: 1, markdown: "inline" }),
60
60
  }),
61
61
  critical: DB.Required({
62
62
  comment: "Lists examples of results for a critical success.",
63
- type: DB.String({ minLength: 1 }),
63
+ type: DB.String({ minLength: 1, markdown: "inline" }),
64
64
  }),
65
65
  botch: DB.Required({
66
66
  comment: "Lists examples of results for botches.",
67
- type: DB.String({ minLength: 1 }),
67
+ type: DB.String({ minLength: 1, markdown: "inline" }),
68
68
  }),
69
69
  errata: DB.Optional({
70
70
  type: DB.IncludeIdentifier(Errata),
@@ -22,7 +22,7 @@ export declare const Armor: DB.Entity<"Armor", {
22
22
  }>, false>;
23
23
  }>, []>>>;
24
24
  }, []>>, true>;
25
- weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, true>;
25
+ weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, false>;
26
26
  complexity: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorComplexity", {
27
27
  Primitive: DB.EnumCase<null>;
28
28
  Simple: DB.EnumCase<null>;
@@ -98,7 +98,12 @@ export declare const Armor: DB.Entity<"Armor", {
98
98
  }, []>>, false>;
99
99
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
100
100
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
101
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
101
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
102
+ Standard: DB.EnumCase<DB.Boolean>;
103
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
104
+ value: DB.MemberDecl<DB.Integer, true>;
105
+ }>, []>>>;
106
+ }, []>>, true>;
102
107
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
103
108
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
104
109
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -300,7 +305,12 @@ export declare const Armor: DB.Entity<"Armor", {
300
305
  export declare const SecondaryArmor: DB.TypeAlias<"SecondaryArmor", DB.Object<{
301
306
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
302
307
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
303
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
308
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
309
+ Standard: DB.EnumCase<DB.Boolean>;
310
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
311
+ value: DB.MemberDecl<DB.Integer, true>;
312
+ }>, []>>>;
313
+ }, []>>, true>;
304
314
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
305
315
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
306
316
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -378,4 +388,9 @@ export declare const SecondaryArmor: DB.TypeAlias<"SecondaryArmor", DB.Object<{
378
388
  }>, []>;
379
389
  export declare const Protection: DB.TypeAlias<"Protection", DB.Integer, []>;
380
390
  export declare const Encumbrance: DB.TypeAlias<"Encumbrance", DB.Integer, []>;
381
- export declare const HasAdditionalPenalties: DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>;
391
+ export declare const HasAdditionalPenalties: DB.Enum<"HasAdditionalPenalties", {
392
+ Standard: DB.EnumCase<DB.Boolean>;
393
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
394
+ value: DB.MemberDecl<DB.Integer, true>;
395
+ }>, []>>>;
396
+ }, []>;
@@ -2,6 +2,7 @@ import { isNotNullish } from "@elyukai/utils/nullable";
2
2
  import * as DB from "tsondb/schema/dsl";
3
3
  import { ArmorIdentifier } from "../../_Identifier.js";
4
4
  import { EquipmentPrerequisites } from "../../_Prerequisite.js";
5
+ import { DerivedCharacteristic } from "../../DerivedCharacteristic.js";
5
6
  import { NestedTranslationMap } from "../../Locale.js";
6
7
  import { Errata } from "../../source/_Erratum.js";
7
8
  import { src } from "../../source/_PublicationRef.js";
@@ -14,7 +15,7 @@ export const Armor = DB.Entity(import.meta.url, {
14
15
  comment: "The cost in silverthalers.",
15
16
  type: DB.IncludeIdentifier(Cost),
16
17
  }),
17
- weight: DB.Required({
18
+ weight: DB.Optional({
18
19
  comment: "The weight in kg.",
19
20
  type: DB.IncludeIdentifier(Weight),
20
21
  }),
@@ -234,10 +235,28 @@ export const Encumbrance = DB.TypeAlias(import.meta.url, {
234
235
  comment: "The ENC value.",
235
236
  type: () => DB.Integer({ minimum: 0 }),
236
237
  });
237
- export const HasAdditionalPenalties = DB.TypeAlias(import.meta.url, {
238
+ export const HasAdditionalPenalties = DB.Enum(import.meta.url, {
238
239
  name: "HasAdditionalPenalties",
239
240
  comment: "Does the armor have additional penalties (MOV -1, INI -1)?",
240
- type: () => DB.Boolean(),
241
+ values: () => ({
242
+ Standard: DB.EnumCase({ type: DB.Boolean() }),
243
+ Custom: DB.EnumCase({ type: DB.IncludeIdentifier(CustomHasAdditionalPenalties) }),
244
+ }),
245
+ });
246
+ const CustomHasAdditionalPenalties = DB.TypeAlias(import.meta.url, {
247
+ name: "CustomHasAdditionalPenalties",
248
+ type: () => DB.NestedEntityMap({
249
+ name: "CustomAdditionalPenalty",
250
+ namePlural: "CustomAdditionalPenalties",
251
+ secondaryEntity: DerivedCharacteristic,
252
+ type: DB.Object({
253
+ value: DB.Required({
254
+ comment: "The value of the additional penalty.",
255
+ type: DB.Integer(),
256
+ }),
257
+ }),
258
+ minProperties: 1,
259
+ }),
241
260
  });
242
261
  const HitZone = DB.Enum(import.meta.url, {
243
262
  name: "HitZone",
@@ -194,7 +194,12 @@ export declare const ArmorAccessory: DB.Entity<"ArmorAccessory", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const BandageOrRemedy: DB.Entity<"BandageOrRemedy", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -199,7 +199,12 @@ export declare const CeremonialItem: DB.Entity<"CeremonialItem", {
199
199
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
200
200
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
201
201
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
202
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
202
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
203
+ Standard: DB.EnumCase<DB.Boolean>;
204
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
205
+ value: DB.MemberDecl<DB.Integer, true>;
206
+ }>, []>>>;
207
+ }, []>>, true>;
203
208
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
204
209
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
205
210
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const Clothes: DB.Entity<"Clothes", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const Container: DB.Entity<"Container", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -125,7 +125,12 @@ export declare const EquipmentOfBlessedOnes: DB.Entity<"EquipmentOfBlessedOnes",
125
125
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
126
126
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
127
127
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
128
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
128
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
129
+ Standard: DB.EnumCase<DB.Boolean>;
130
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
131
+ value: DB.MemberDecl<DB.Integer, true>;
132
+ }>, []>>>;
133
+ }, []>>, true>;
129
134
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
130
135
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
131
136
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -203,7 +203,12 @@ export declare const IlluminationLightSource: DB.Entity<"IlluminationLightSource
203
203
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
204
204
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
205
205
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
206
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
206
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
207
+ Standard: DB.EnumCase<DB.Boolean>;
208
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
209
+ value: DB.MemberDecl<DB.Integer, true>;
210
+ }>, []>>>;
211
+ }, []>>, true>;
207
212
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
208
213
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
209
214
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const IlluminationRefillOrSupply: DB.Entity<"IlluminationRefillOr
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -159,7 +159,12 @@ export declare const Item: DB.Entity<"Item", {
159
159
  armorUse: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
160
160
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
161
161
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
162
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
162
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
163
+ Standard: DB.EnumCase<DB.Boolean>;
164
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
165
+ value: DB.MemberDecl<DB.Integer, true>;
166
+ }>, []>>>;
167
+ }, []>>, true>;
163
168
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
164
169
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
165
170
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const Liebesspielzeug: DB.Entity<"Liebesspielzeug", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const LuxuryGood: DB.Entity<"LuxuryGood", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const MagicalArtifact: DB.Entity<"MagicalArtifact", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const MusicalInstrument: DB.Entity<"MusicalInstrument", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -193,7 +193,12 @@ export declare const OrienteeringAid: import("tsondb/schema/dsl").Entity<string,
193
193
  Armor: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"SecondaryArmor", import("tsondb/schema/dsl").Object<{
194
194
  protection: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Protection", import("tsondb/schema/dsl").Integer, []>>, true>;
195
195
  encumbrance: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Encumbrance", import("tsondb/schema/dsl").Integer, []>>, true>;
196
- has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"HasAdditionalPenalties", import("tsondb/schema/dsl").Boolean, []>>, true>;
196
+ has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"HasAdditionalPenalties", {
197
+ Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").Boolean>;
198
+ Custom: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"CustomHasAdditionalPenalties", import("tsondb/schema/dsl").NestedEntityMap<string, {
199
+ value: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
200
+ }>, []>>>;
201
+ }, []>>, true>;
197
202
  armorType: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"ArmorType", {
198
203
  Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StandardArmorType", import("tsondb/schema/dsl").Object<{
199
204
  sturdinessRating: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
@@ -193,7 +193,12 @@ export declare const RopeOrChain: import("tsondb/schema/dsl").Entity<string, {
193
193
  Armor: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"SecondaryArmor", import("tsondb/schema/dsl").Object<{
194
194
  protection: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Protection", import("tsondb/schema/dsl").Integer, []>>, true>;
195
195
  encumbrance: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Encumbrance", import("tsondb/schema/dsl").Integer, []>>, true>;
196
- has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"HasAdditionalPenalties", import("tsondb/schema/dsl").Boolean, []>>, true>;
196
+ has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"HasAdditionalPenalties", {
197
+ Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").Boolean>;
198
+ Custom: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"CustomHasAdditionalPenalties", import("tsondb/schema/dsl").NestedEntityMap<string, {
199
+ value: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
200
+ }>, []>>>;
201
+ }, []>>, true>;
197
202
  armorType: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"ArmorType", {
198
203
  Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StandardArmorType", import("tsondb/schema/dsl").Object<{
199
204
  sturdinessRating: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
@@ -193,7 +193,12 @@ export declare const Stationery: import("tsondb/schema/dsl").Entity<string, {
193
193
  Armor: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"SecondaryArmor", import("tsondb/schema/dsl").Object<{
194
194
  protection: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Protection", import("tsondb/schema/dsl").Integer, []>>, true>;
195
195
  encumbrance: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Encumbrance", import("tsondb/schema/dsl").Integer, []>>, true>;
196
- has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"HasAdditionalPenalties", import("tsondb/schema/dsl").Boolean, []>>, true>;
196
+ has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"HasAdditionalPenalties", {
197
+ Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").Boolean>;
198
+ Custom: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"CustomHasAdditionalPenalties", import("tsondb/schema/dsl").NestedEntityMap<string, {
199
+ value: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
200
+ }>, []>>>;
201
+ }, []>>, true>;
197
202
  armorType: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"ArmorType", {
198
203
  Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StandardArmorType", import("tsondb/schema/dsl").Object<{
199
204
  sturdinessRating: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
@@ -193,7 +193,12 @@ export declare const ThievesTool: import("tsondb/schema/dsl").Entity<string, {
193
193
  Armor: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"SecondaryArmor", import("tsondb/schema/dsl").Object<{
194
194
  protection: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Protection", import("tsondb/schema/dsl").Integer, []>>, true>;
195
195
  encumbrance: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"Encumbrance", import("tsondb/schema/dsl").Integer, []>>, true>;
196
- has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"HasAdditionalPenalties", import("tsondb/schema/dsl").Boolean, []>>, true>;
196
+ has_additional_penalties: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"HasAdditionalPenalties", {
197
+ Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").Boolean>;
198
+ Custom: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"CustomHasAdditionalPenalties", import("tsondb/schema/dsl").NestedEntityMap<string, {
199
+ value: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
200
+ }>, []>>>;
201
+ }, []>>, true>;
197
202
  armorType: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"ArmorType", {
198
203
  Standard: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StandardArmorType", import("tsondb/schema/dsl").Object<{
199
204
  sturdinessRating: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
@@ -194,7 +194,12 @@ export declare const TravelGearOrTool: DB.Entity<"TravelGearOrTool", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const WeaponAccessory: DB.Entity<"WeaponAccessory", {
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -194,7 +194,12 @@ export declare const DefaultItem: (sourceUrl: string, singularName: string, plur
194
194
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
195
195
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
196
196
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
197
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
197
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
198
+ Standard: DB.EnumCase<DB.Boolean>;
199
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
200
+ value: DB.MemberDecl<DB.Integer, true>;
201
+ }>, []>>>;
202
+ }, []>>, true>;
198
203
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
199
204
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
200
205
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
@@ -450,7 +455,12 @@ export declare const CombatUse: DB.Enum<"CombatUse", {
450
455
  Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
451
456
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
452
457
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
453
- has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
458
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HasAdditionalPenalties", {
459
+ Standard: DB.EnumCase<DB.Boolean>;
460
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomHasAdditionalPenalties", DB.NestedEntityMap<string, {
461
+ value: DB.MemberDecl<DB.Integer, true>;
462
+ }>, []>>>;
463
+ }, []>>, true>;
454
464
  armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
455
465
  Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
456
466
  sturdinessRating: DB.MemberDecl<DB.Integer, true>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.111.1",
3
+ "version": "0.113.1",
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",