@optolith/database-schema 0.111.0 → 0.112.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.
Files changed (30) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/gen/types.d.ts +33 -3
  3. package/lib/cache/index.d.ts +2 -2
  4. package/lib/cache/internal.d.ts +2 -2
  5. package/lib/types/Settings.d.ts +118 -0
  6. package/lib/types/Settings.js +9 -1
  7. package/lib/types/Skill.js +5 -5
  8. package/lib/types/equipment/item/Armor.d.ts +19 -4
  9. package/lib/types/equipment/item/Armor.js +22 -3
  10. package/lib/types/equipment/item/ArmorAccessory.d.ts +6 -1
  11. package/lib/types/equipment/item/BandageOrRemedy.d.ts +6 -1
  12. package/lib/types/equipment/item/CeremonialItem.d.ts +6 -1
  13. package/lib/types/equipment/item/Clothes.d.ts +6 -1
  14. package/lib/types/equipment/item/Container.d.ts +6 -1
  15. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +6 -1
  16. package/lib/types/equipment/item/IlluminationLightSource.d.ts +6 -1
  17. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +6 -1
  18. package/lib/types/equipment/item/Item.d.ts +6 -1
  19. package/lib/types/equipment/item/Liebesspielzeug.d.ts +6 -1
  20. package/lib/types/equipment/item/LuxuryGood.d.ts +6 -1
  21. package/lib/types/equipment/item/MagicalArtifact.d.ts +6 -1
  22. package/lib/types/equipment/item/MusicalInstrument.d.ts +6 -1
  23. package/lib/types/equipment/item/OrienteeringAid.d.ts +6 -1
  24. package/lib/types/equipment/item/RopeOrChain.d.ts +6 -1
  25. package/lib/types/equipment/item/Stationery.d.ts +6 -1
  26. package/lib/types/equipment/item/ThievesTool.d.ts +6 -1
  27. package/lib/types/equipment/item/TravelGearOrTool.d.ts +6 -1
  28. package/lib/types/equipment/item/WeaponAccessory.d.ts +6 -1
  29. package/lib/types/equipment/item/_Item.d.ts +12 -2
  30. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
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.112.0](https://github.com/Optolith/database-schema/compare/v0.111.1...v0.112.0) (2026-10-24)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * custom additional penalties
10
+ * define skill and combat technique rating bonus entries
11
+ * optional armor weight
12
+
13
+ ### Features
14
+
15
+ * custom additional penalties ([1c56824](https://github.com/Optolith/database-schema/commit/1c56824e11b36a9fdbc3b6cb57588dc0a684358e))
16
+ * define skill and combat technique rating bonus entries ([efe4a54](https://github.com/Optolith/database-schema/commit/efe4a549c01e4ee4ed8710f6447059a5b60cd0b9))
17
+ * optional armor weight ([35729c4](https://github.com/Optolith/database-schema/commit/35729c42a7dd7152be8c3146032a5e42a7ea915a))
18
+
19
+ ### Bug Fixes
20
+
21
+ * skill descriptions support markdown ([1aeb838](https://github.com/Optolith/database-schema/commit/1aeb838e43bde7a31b8f34ff965b3e06ae3d2c82))
22
+
23
+ ## [0.111.1](https://github.com/Optolith/database-schema/compare/v0.111.0...v0.111.1) (2026-10-18)
24
+
5
25
  ## [0.111.0](https://github.com/Optolith/database-schema/compare/v0.110.1...v0.111.0) (2026-10-18)
6
26
 
7
27
  ### ⚠ BREAKING CHANGES
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
@@ -745,7 +747,6 @@ export type TypeAliasMap = {
745
747
  GoblinRitualSustainedCost: GoblinRitualSustainedCost
746
748
  GoblinRitualSustainedPerformanceParameters: GoblinRitualSustainedPerformanceParameters
747
749
  GroupedCommonProfessions: GroupedCommonProfessions
748
- HasAdditionalPenalties: HasAdditionalPenalties
749
750
  HeadHitZone: HeadHitZone
750
751
  HeadHitZoneCombinationPossibilities: HeadHitZoneCombinationPossibilities
751
752
  HerbalAidRecipe: HerbalAidRecipe
@@ -24228,7 +24229,7 @@ export interface Armor {
24228
24229
  /**
24229
24230
  * The weight in kg.
24230
24231
  */
24231
- weight: Weight
24232
+ weight?: Weight
24232
24233
 
24233
24234
  /**
24234
24235
  * The complexity of crafting the item.
@@ -24363,7 +24364,26 @@ export type Encumbrance = number
24363
24364
  /**
24364
24365
  * Does the armor have additional penalties (MOV -1, INI -1)?
24365
24366
  */
24366
- export type HasAdditionalPenalties = boolean
24367
+ export type HasAdditionalPenalties =
24368
+ | {
24369
+ kind: "Standard"
24370
+ Standard: boolean
24371
+ }
24372
+ | {
24373
+ kind: "Custom"
24374
+ Custom: CustomHasAdditionalPenalties
24375
+ }
24376
+
24377
+ export type CustomHasAdditionalPenalties = {
24378
+ [derivedCharacteristicId: string]: CustomAdditionalPenalty
24379
+ }
24380
+
24381
+ export interface CustomAdditionalPenalty {
24382
+ /**
24383
+ * The value of the additional penalty.
24384
+ */
24385
+ value: number
24386
+ }
24367
24387
 
24368
24388
  /**
24369
24389
  * The armor type.
@@ -29244,6 +29264,16 @@ export interface Settings {
29244
29264
  * The publication that extends the description of books with additional information.
29245
29265
  */
29246
29266
  extendedBookDescriptionPublication: Publication_ID
29267
+
29268
+ /**
29269
+ * The entry that grants a bonus of 1 towards the maximum skill rating per selection.
29270
+ */
29271
+ maximumSkillRatingBonusEntry: ActivatableIdentifier
29272
+
29273
+ /**
29274
+ * The entry that grants a bonus of 1 towards the maximum skill rating per selection.
29275
+ */
29276
+ maximumCombatTechniqueRatingBonusEntry: ActivatableIdentifier
29247
29277
  }
29248
29278
 
29249
29279
  /**
@@ -1,4 +1,4 @@
1
- import type { TSONDB } from "tsondb";
1
+ import type { ReadonlyTSONDB } from "tsondb/readonly";
2
2
  import type { TSONDBTypes } from "../main.ts";
3
3
  import { type ActivatableSelectOptionsCache, type ResolvedSelectOption, type ResolvedSelectOptionIdentifier } from "./activatableSelectOptions.ts";
4
4
  import { type AncestorBloodAdvantagesCache } from "./ancestorBloodAdvantages.ts";
@@ -22,4 +22,4 @@ export type { ActivatableSelectOptionsCache, AncestorBloodAdvantagesCache, Magic
22
22
  * @param idMap An object containing identifiers of specific entries in the database that are used for creating the cache.
23
23
  * @returns The created cache object.
24
24
  */
25
- export declare const createCache: (db: TSONDB<TSONDBTypes>) => Cache;
25
+ export declare const createCache: (db: ReadonlyTSONDB<TSONDBTypes>) => Cache;
@@ -1,4 +1,4 @@
1
- import type { TSONDB } from "tsondb";
1
+ import type { ReadonlyTSONDB } from "tsondb/readonly";
2
2
  import type { Settings } from "../../gen/types.js";
3
3
  import type { TSONDBTypes } from "../main.ts";
4
- export type CacheBuilder<T = unknown, Args extends unknown[] = []> = (db: TSONDB<TSONDBTypes>, settings: Settings, ...args: Args) => T;
4
+ export type CacheBuilder<T = unknown, Args extends unknown[] = []> = (db: ReadonlyTSONDB<TSONDBTypes>, settings: Settings, ...args: Args) => T;
@@ -187,4 +187,122 @@ export declare const Settings: DB.SingletonEntity<"Settings", {
187
187
  liturgical: DB.MemberDecl<DB.ReferenceIdentifier, true>;
188
188
  }>, []>>, true>;
189
189
  extendedBookDescriptionPublication: DB.MemberDecl<DB.ReferenceIdentifier, true>;
190
+ maximumSkillRatingBonusEntry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableIdentifier", {
191
+ Adoruzepterzauber: DB.EnumCase<DB.ReferenceIdentifier>;
192
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
193
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
194
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
195
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
196
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
197
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
198
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
199
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
200
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
201
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
202
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
203
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
204
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
205
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
206
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
207
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
208
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
209
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
210
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
211
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
212
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
213
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
214
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
215
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
216
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
217
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
218
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
219
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
220
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
221
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
222
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
223
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
224
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
225
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
226
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
227
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
228
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
229
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
230
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
231
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
232
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
233
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
234
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
235
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
236
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
237
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
238
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
239
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
240
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
241
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
242
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
243
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
244
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
245
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
246
+ Advantage: DB.EnumCase<DB.ReferenceIdentifier>;
247
+ Disadvantage: DB.EnumCase<DB.ReferenceIdentifier>;
248
+ }, []>>, true>;
249
+ maximumCombatTechniqueRatingBonusEntry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableIdentifier", {
250
+ Adoruzepterzauber: DB.EnumCase<DB.ReferenceIdentifier>;
251
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
252
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
253
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
254
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
255
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
256
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
257
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
258
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
259
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
260
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
261
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
262
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
263
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
264
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
265
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
266
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
267
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
268
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
269
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
270
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
271
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
272
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
273
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
274
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
275
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
276
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
277
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
278
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
279
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
280
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
281
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
282
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
283
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
284
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
285
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
286
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
287
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
288
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
289
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
290
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
291
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
292
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
293
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
294
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
295
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
296
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
297
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
298
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
299
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
300
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
301
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
302
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
303
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
304
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
305
+ Advantage: DB.EnumCase<DB.ReferenceIdentifier>;
306
+ Disadvantage: DB.EnumCase<DB.ReferenceIdentifier>;
307
+ }, []>>, true>;
190
308
  }>;
@@ -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({
@@ -31,6 +31,14 @@ export const Settings = DB.SingletonEntity(import.meta.url, {
31
31
  comment: "The publication that extends the description of books with additional information.",
32
32
  type: PublicationIdentifier(),
33
33
  }),
34
+ maximumSkillRatingBonusEntry: DB.Required({
35
+ comment: "The entry that grants a bonus of 1 towards the maximum skill rating per selection.",
36
+ type: DB.IncludeIdentifier(ActivatableIdentifier),
37
+ }),
38
+ maximumCombatTechniqueRatingBonusEntry: 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
+ }),
34
42
  }),
35
43
  });
36
44
  const SupernaturalBaseAdvantageSettings = DB.TypeAlias(import.meta.url, {
@@ -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.0",
3
+ "version": "0.112.0",
4
4
  "description": "Definitions and utilities for the flat-file database of Optolith, a character creation tool for the Pen and Paper RPG “The Dark Eye 5”, and its external integrations into other software.",
5
5
  "keywords": [
6
6
  "tde",
@@ -39,7 +39,7 @@
39
39
  "license": "MPL-2.0",
40
40
  "dependencies": {
41
41
  "@elyukai/utils": "^0.3.6",
42
- "tsondb": "^0.23.0"
42
+ "tsondb": "^0.23.2"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@elyukai/oxc-config": "^0.1.0",