optolith-database-schema 0.31.1 → 0.31.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md 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.31.3](https://github.com/elyukai/optolith-database-schema/compare/v0.31.2...v0.31.3) (2026-02-16)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * interpretation and display of poisons/elixirs ([30a6a3c](https://github.com/elyukai/optolith-database-schema/commit/30a6a3c4262e2920f9100605faee8c426cd37491))
11
+
12
+ ## [0.31.2](https://github.com/elyukai/optolith-database-schema/compare/v0.31.1...v0.31.2) (2026-02-15)
13
+
14
+
15
+ ### Features
16
+
17
+ * add translations for poisons, elixirs, sex practices, diseases and personality traits ([3561289](https://github.com/elyukai/optolith-database-schema/commit/3561289fc1283bcecde3065bee5850b166ba3270))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * incorrect comment ([c3a6124](https://github.com/elyukai/optolith-database-schema/commit/c3a61244cec93af6396f723ee972e7911f98c1fa))
23
+ * poison addition interpretation ([a24aeb6](https://github.com/elyukai/optolith-database-schema/commit/a24aeb6dd1cf170afe0d7de1b23f5cdf0c11b5b3))
24
+
5
25
  ## [0.31.1](https://github.com/elyukai/optolith-database-schema/compare/v0.31.0...v0.31.1) (2026-02-15)
6
26
 
7
27
 
package/gen/types.d.ts CHANGED
@@ -299,7 +299,7 @@ export type EnumMap = {
299
299
  ImprovementCost: ImprovementCost
300
300
  IndefiniteArcaneEnergyCostModifierArithmetic: IndefiniteArcaneEnergyCostModifierArithmetic
301
301
  InfluencePrerequisiteGroup: InfluencePrerequisiteGroup
302
- IntoxicantAddictionInterval: IntoxicantAddictionInterval
302
+ IntoxicantAddictionWithdrawalPreventionInterval: IntoxicantAddictionWithdrawalPreventionInterval
303
303
  JesterTrickDuration: JesterTrickDuration
304
304
  JesterTrickRange: JesterTrickRange
305
305
  LaboratoryLevel: LaboratoryLevel
@@ -621,6 +621,8 @@ export type TypeAliasMap = {
621
621
  IntervalArcaneEnergyCost: IntervalArcaneEnergyCost
622
622
  Intoxicant: Intoxicant
623
623
  IntoxicantAddiction: IntoxicantAddiction
624
+ IntoxicantAddictionCheck: IntoxicantAddictionCheck
625
+ IntoxicantAddictionWithdrawalPrevention: IntoxicantAddictionWithdrawalPrevention
624
626
  IntoxicantLegality: IntoxicantLegality
625
627
  JesterTrickCastingTime: JesterTrickCastingTime
626
628
  JesterTrickCost: JesterTrickCost
@@ -2331,6 +2333,58 @@ export interface Locale {
2331
2333
  "Structure Points": string
2332
2334
  ".input {$value :number} {{{$value} Structure Points}}": string & { __params: { "value": number } }
2333
2335
  "{$value} Structure Points": string & { __params: { "value": StringableTranslationParameter } }
2336
+ "{$types} poison": string & { __params: { "types": StringableTranslationParameter } }
2337
+ "Weapon (poison)": string
2338
+ "Ingestion (poison)": string
2339
+ "Inhalation (poison)": string
2340
+ "Contact (poison)": string
2341
+ "Level": string
2342
+ "Type": string
2343
+ "animal venom": string
2344
+ "alchemical poison": string
2345
+ "mineral poison": string
2346
+ "plant poison": string
2347
+ "demonic poison": string
2348
+ "Archaic laboratory": string
2349
+ "Witch kitchen": string
2350
+ "Alchemist’s laboratory": string
2351
+ "Resistance": string
2352
+ "{$first} or {$second}, depending on which value is lower": string & { __params: { "first": StringableTranslationParameter; "second": StringableTranslationParameter } }
2353
+ "Start": string
2354
+ "immediate": string
2355
+ "instant": string
2356
+ "Typical Ingredients": string
2357
+ "Price of Ingredients/Level": string
2358
+ "Laboratory": string
2359
+ "Brewing Difficulty": string
2360
+ "Brewing Process": string
2361
+ "Trade Secret": string
2362
+ "The poison levels equals the QL.": string
2363
+ ".input {$value :number} {{{$value} applications every {$interval}}}": string & { __params: { "value": number; "interval": StringableTranslationParameter } }
2364
+ "{$valueRange} on {$dice}": string & { __params: { "valueRange": StringableTranslationParameter; "dice": StringableTranslationParameter } }
2365
+ "Ingestion": string
2366
+ "Side Effect": string
2367
+ "Overdose": string
2368
+ "Legality": string
2369
+ "legal": string
2370
+ "illegal": string
2371
+ "Addiction": string
2372
+ "Value/Cost": string
2373
+ "cannot be extracted": string
2374
+ ".input {$hiddenCount :number} {{Alternative Names}}": string & { __params: { "hiddenCount": number } }
2375
+ ".input {$count :number} {{check required every {$count}. application}}": string & { __params: { "count": number } }
2376
+ ".input {$count :number} {{check required every {$count}. application in the same month}}": string & { __params: { "count": number } }
2377
+ "Failed": string
2378
+ "Progress": string
2379
+ "Incubation Time": string
2380
+ "Damage": string
2381
+ "Causes": string
2382
+ "Treatment": string
2383
+ "Antidote": string
2384
+ ".input {$value :number} {{{$value}%}}": string & { __params: { "value": number } }
2385
+ "Animal Types": string
2386
+ "Communicability to Intelligent Creatures": string
2387
+ "Can be combined with": string
2334
2388
  }
2335
2389
  }
2336
2390
 
@@ -20602,7 +20656,7 @@ export interface ElixirTranslationTranslation {
20602
20656
  description?: string
20603
20657
 
20604
20658
  /**
20605
- * The recipe’s description.
20659
+ * Special information about the elixir.
20606
20660
  */
20607
20661
  special?: string
20608
20662
 
@@ -21931,10 +21985,15 @@ export interface IntoxicantAddiction {
21931
21985
  */
21932
21986
  chance?: number
21933
21987
 
21988
+ /**
21989
+ * The interval at which to check for addiction after an ingestion. If set to one, every ingestion has to be checked for addiction. If set to two, every second ingestion has to be checked, and so on.
21990
+ */
21991
+ check?: IntoxicantAddictionCheck
21992
+
21934
21993
  /**
21935
21994
  * The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.
21936
21995
  */
21937
- interval: IntoxicantAddictionInterval
21996
+ withdrawalPrevention: IntoxicantAddictionWithdrawalPrevention
21938
21997
 
21939
21998
  /**
21940
21999
  * All translations for the entry, identified by IETF language tag (BCP47).
@@ -21951,10 +22010,34 @@ export interface IntoxicantAddictionTranslation {
21951
22010
  chance: string
21952
22011
  }
21953
22012
 
22013
+ /**
22014
+ * The interval at which to check for addiction after an ingestion. If set to one, every ingestion has to be checked for addiction. If set to two, every second ingestion has to be checked, and so on.
22015
+ */
22016
+ export interface IntoxicantAddictionCheck {
22017
+ interval: number
22018
+
22019
+ /**
22020
+ * If true, only ingestions in the same month count for the check interval.
22021
+ */
22022
+ onlySameMonth?: boolean
22023
+ }
22024
+
22025
+ export interface IntoxicantAddictionWithdrawalPrevention {
22026
+ /**
22027
+ * The amount that must be ingested within the interval to prevent withdrawal symptoms.
22028
+ */
22029
+ amount: number
22030
+
22031
+ /**
22032
+ * The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.
22033
+ */
22034
+ interval: IntoxicantAddictionWithdrawalPreventionInterval
22035
+ }
22036
+
21954
22037
  /**
21955
22038
  * The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.
21956
22039
  */
21957
- export type IntoxicantAddictionInterval =
22040
+ export type IntoxicantAddictionWithdrawalPreventionInterval =
21958
22041
  | {
21959
22042
  kind: "Constant"
21960
22043
  Constant: ConstantIntoxicantAddictionInterval
@@ -1414,6 +1414,58 @@ export declare const Locale: DB.Entity<"Locale", {
1414
1414
  "Structure Points": null;
1415
1415
  ".input {$value :number} {{{$value} Structure Points}}": null;
1416
1416
  "{$value} Structure Points": null;
1417
+ "{$types} poison": null;
1418
+ "Weapon (poison)": null;
1419
+ "Ingestion (poison)": null;
1420
+ "Inhalation (poison)": null;
1421
+ "Contact (poison)": null;
1422
+ Level: null;
1423
+ Type: null;
1424
+ "animal venom": null;
1425
+ "alchemical poison": null;
1426
+ "mineral poison": null;
1427
+ "plant poison": null;
1428
+ "demonic poison": null;
1429
+ "Archaic laboratory": null;
1430
+ "Witch kitchen": null;
1431
+ "Alchemist\u2019s laboratory": null;
1432
+ Resistance: null;
1433
+ "{$first} or {$second}, depending on which value is lower": null;
1434
+ Start: null;
1435
+ immediate: null;
1436
+ instant: null;
1437
+ "Typical Ingredients": null;
1438
+ "Price of Ingredients/Level": null;
1439
+ Laboratory: null;
1440
+ "Brewing Difficulty": null;
1441
+ "Brewing Process": null;
1442
+ "Trade Secret": null;
1443
+ "The poison levels equals the QL.": null;
1444
+ ".input {$value :number} {{{$value} applications every {$interval}}}": null;
1445
+ "{$valueRange} on {$dice}": null;
1446
+ Ingestion: null;
1447
+ "Side Effect": null;
1448
+ Overdose: null;
1449
+ Legality: null;
1450
+ legal: null;
1451
+ illegal: null;
1452
+ Addiction: null;
1453
+ "Value/Cost": null;
1454
+ "cannot be extracted": null;
1455
+ ".input {$hiddenCount :number} {{Alternative Names}}": null;
1456
+ ".input {$count :number} {{check required every {$count}. application}}": null;
1457
+ ".input {$count :number} {{check required every {$count}. application in the same month}}": null;
1458
+ Failed: null;
1459
+ Progress: null;
1460
+ "Incubation Time": null;
1461
+ Damage: null;
1462
+ Causes: null;
1463
+ Treatment: null;
1464
+ Antidote: null;
1465
+ ".input {$value :number} {{{$value}%}}": null;
1466
+ "Animal Types": null;
1467
+ "Communicability to Intelligent Creatures": null;
1468
+ "Can be combined with": null;
1417
1469
  }>, false>;
1418
1470
  }, undefined>;
1419
1471
  export declare const NestedTranslationMap: <Name extends string, T extends Record<string, DB.MemberDecl>, R extends boolean>(MemberDeclCreator: <T_1 extends DB.Type>(options: {
@@ -1453,6 +1453,62 @@ export const Locale = DB.Entity(import.meta.url, {
1453
1453
  "Structure Points": null,
1454
1454
  ".input {$value :number} {{{$value} Structure Points}}": null,
1455
1455
  "{$value} Structure Points": null,
1456
+ // poisons/elixirs
1457
+ "{$types} poison": null,
1458
+ "Weapon (poison)": null,
1459
+ "Ingestion (poison)": null,
1460
+ "Inhalation (poison)": null,
1461
+ "Contact (poison)": null,
1462
+ "Level": null,
1463
+ "Type": null,
1464
+ "animal venom": null,
1465
+ "alchemical poison": null,
1466
+ "mineral poison": null,
1467
+ "plant poison": null,
1468
+ "demonic poison": null,
1469
+ "Archaic laboratory": null,
1470
+ "Witch kitchen": null,
1471
+ "Alchemist’s laboratory": null,
1472
+ "Resistance": null,
1473
+ "{$first} or {$second}, depending on which value is lower": null,
1474
+ "Start": null,
1475
+ "immediate": null,
1476
+ "instant": null,
1477
+ "Typical Ingredients": null,
1478
+ "Price of Ingredients/Level": null,
1479
+ "Laboratory": null,
1480
+ "Brewing Difficulty": null,
1481
+ "Brewing Process": null,
1482
+ "Trade Secret": null,
1483
+ "The poison levels equals the QL.": null,
1484
+ ".input {$value :number} {{{$value} applications every {$interval}}}": null,
1485
+ "{$valueRange} on {$dice}": null,
1486
+ "Ingestion": null,
1487
+ "Side Effect": null,
1488
+ "Overdose": null,
1489
+ "Legality": null,
1490
+ "legal": null,
1491
+ "illegal": null,
1492
+ "Addiction": null,
1493
+ "Value/Cost": null,
1494
+ "cannot be extracted": null,
1495
+ ".input {$hiddenCount :number} {{Alternative Names}}": null,
1496
+ ".input {$count :number} {{check required every {$count}. application}}": null,
1497
+ ".input {$count :number} {{check required every {$count}. application in the same month}}": null,
1498
+ // sex practices
1499
+ "Failed": null,
1500
+ // diseases
1501
+ "Progress": null,
1502
+ "Incubation Time": null,
1503
+ "Damage": null,
1504
+ "Causes": null,
1505
+ "Treatment": null,
1506
+ "Antidote": null,
1507
+ ".input {$value :number} {{{$value}%}}": null,
1508
+ "Animal Types": null,
1509
+ "Communicability to Intelligent Creatures": null,
1510
+ // personality traits
1511
+ "Can be combined with": null,
1456
1512
  }, { allKeysAreRequired: true }),
1457
1513
  }),
1458
1514
  }),
@@ -43,7 +43,7 @@ export const Elixir = DB.Entity(import.meta.url, {
43
43
  type: DB.String({ minLength: 1 }),
44
44
  }),
45
45
  special: DB.Optional({
46
- comment: "The recipe’s description.",
46
+ comment: "Special information about the elixir.",
47
47
  type: DB.String({ minLength: 1 }),
48
48
  }),
49
49
  alternative_names: DB.Optional({
@@ -98,17 +98,24 @@ export declare const Poison: DB.Entity<"Poison", {
98
98
  }>, []>>, true>;
99
99
  addiction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddiction", DB.Object<{
100
100
  chance: DB.MemberDecl<DB.Integer, false>;
101
- interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionInterval", {
102
- Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
103
- value: DB.MemberDecl<DB.Integer, true>;
104
- }>, []>>>;
105
- DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
106
- dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
107
- number: DB.MemberDecl<DB.Integer, true>;
108
- sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
109
- }>, []>>, true>;
110
- }>, []>>>;
111
- }, []>>, true>;
101
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionCheck", DB.Object<{
102
+ interval: DB.MemberDecl<DB.Integer, true>;
103
+ onlySameMonth: DB.MemberDecl<DB.Boolean, false>;
104
+ }>, []>>, false>;
105
+ withdrawalPrevention: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionWithdrawalPrevention", DB.Object<{
106
+ amount: DB.MemberDecl<DB.Integer, true>;
107
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionWithdrawalPreventionInterval", {
108
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
109
+ value: DB.MemberDecl<DB.Integer, true>;
110
+ }>, []>>>;
111
+ DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
112
+ dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
113
+ number: DB.MemberDecl<DB.Integer, true>;
114
+ sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
115
+ }>, []>>, true>;
116
+ }>, []>>>;
117
+ }, []>>, true>;
118
+ }>, []>>, true>;
112
119
  translations: DB.MemberDecl<DB.NestedEntityMap<"IntoxicantAddictionTranslation", {
113
120
  chance: DB.MemberDecl<DB.String, true>;
114
121
  }>, false>;
@@ -145,17 +152,24 @@ export declare const Poison: DB.Entity<"Poison", {
145
152
  }>, []>>, true>;
146
153
  addiction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddiction", DB.Object<{
147
154
  chance: DB.MemberDecl<DB.Integer, false>;
148
- interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionInterval", {
149
- Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
150
- value: DB.MemberDecl<DB.Integer, true>;
151
- }>, []>>>;
152
- DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
153
- dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
154
- number: DB.MemberDecl<DB.Integer, true>;
155
- sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
156
- }>, []>>, true>;
157
- }>, []>>>;
158
- }, []>>, true>;
155
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionCheck", DB.Object<{
156
+ interval: DB.MemberDecl<DB.Integer, true>;
157
+ onlySameMonth: DB.MemberDecl<DB.Boolean, false>;
158
+ }>, []>>, false>;
159
+ withdrawalPrevention: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionWithdrawalPrevention", DB.Object<{
160
+ amount: DB.MemberDecl<DB.Integer, true>;
161
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionWithdrawalPreventionInterval", {
162
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
163
+ value: DB.MemberDecl<DB.Integer, true>;
164
+ }>, []>>>;
165
+ DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
166
+ dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
167
+ number: DB.MemberDecl<DB.Integer, true>;
168
+ sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
169
+ }>, []>>, true>;
170
+ }>, []>>>;
171
+ }, []>>, true>;
172
+ }>, []>>, true>;
159
173
  translations: DB.MemberDecl<DB.NestedEntityMap<"IntoxicantAddictionTranslation", {
160
174
  chance: DB.MemberDecl<DB.String, true>;
161
175
  }>, false>;
@@ -440,17 +454,24 @@ export declare const AlchemicalPoison: DB.TypeAlias<"AlchemicalPoison", DB.Objec
440
454
  }>, []>>, true>;
441
455
  addiction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddiction", DB.Object<{
442
456
  chance: DB.MemberDecl<DB.Integer, false>;
443
- interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionInterval", {
444
- Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
445
- value: DB.MemberDecl<DB.Integer, true>;
446
- }>, []>>>;
447
- DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
448
- dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
449
- number: DB.MemberDecl<DB.Integer, true>;
450
- sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
451
- }>, []>>, true>;
452
- }>, []>>>;
453
- }, []>>, true>;
457
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionCheck", DB.Object<{
458
+ interval: DB.MemberDecl<DB.Integer, true>;
459
+ onlySameMonth: DB.MemberDecl<DB.Boolean, false>;
460
+ }>, []>>, false>;
461
+ withdrawalPrevention: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionWithdrawalPrevention", DB.Object<{
462
+ amount: DB.MemberDecl<DB.Integer, true>;
463
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionWithdrawalPreventionInterval", {
464
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
465
+ value: DB.MemberDecl<DB.Integer, true>;
466
+ }>, []>>>;
467
+ DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
468
+ dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
469
+ number: DB.MemberDecl<DB.Integer, true>;
470
+ sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
471
+ }>, []>>, true>;
472
+ }>, []>>>;
473
+ }, []>>, true>;
474
+ }>, []>>, true>;
454
475
  translations: DB.MemberDecl<DB.NestedEntityMap<"IntoxicantAddictionTranslation", {
455
476
  chance: DB.MemberDecl<DB.String, true>;
456
477
  }>, false>;
@@ -487,17 +508,24 @@ export declare const PlantPoison: DB.TypeAlias<"PlantPoison", DB.Object<{
487
508
  }>, []>>, true>;
488
509
  addiction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddiction", DB.Object<{
489
510
  chance: DB.MemberDecl<DB.Integer, false>;
490
- interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionInterval", {
491
- Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
492
- value: DB.MemberDecl<DB.Integer, true>;
493
- }>, []>>>;
494
- DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
495
- dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
496
- number: DB.MemberDecl<DB.Integer, true>;
497
- sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
498
- }>, []>>, true>;
499
- }>, []>>>;
500
- }, []>>, true>;
511
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionCheck", DB.Object<{
512
+ interval: DB.MemberDecl<DB.Integer, true>;
513
+ onlySameMonth: DB.MemberDecl<DB.Boolean, false>;
514
+ }>, []>>, false>;
515
+ withdrawalPrevention: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionWithdrawalPrevention", DB.Object<{
516
+ amount: DB.MemberDecl<DB.Integer, true>;
517
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionWithdrawalPreventionInterval", {
518
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
519
+ value: DB.MemberDecl<DB.Integer, true>;
520
+ }>, []>>>;
521
+ DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
522
+ dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
523
+ number: DB.MemberDecl<DB.Integer, true>;
524
+ sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
525
+ }>, []>>, true>;
526
+ }>, []>>>;
527
+ }, []>>, true>;
528
+ }>, []>>, true>;
501
529
  translations: DB.MemberDecl<DB.NestedEntityMap<"IntoxicantAddictionTranslation", {
502
530
  chance: DB.MemberDecl<DB.String, true>;
503
531
  }>, false>;
@@ -539,17 +567,24 @@ export declare const Intoxicant: DB.TypeAlias<"Intoxicant", DB.Object<{
539
567
  }>, []>>, true>;
540
568
  addiction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddiction", DB.Object<{
541
569
  chance: DB.MemberDecl<DB.Integer, false>;
542
- interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionInterval", {
543
- Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
544
- value: DB.MemberDecl<DB.Integer, true>;
545
- }>, []>>>;
546
- DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
547
- dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
548
- number: DB.MemberDecl<DB.Integer, true>;
549
- sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
550
- }>, []>>, true>;
551
- }>, []>>>;
552
- }, []>>, true>;
570
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionCheck", DB.Object<{
571
+ interval: DB.MemberDecl<DB.Integer, true>;
572
+ onlySameMonth: DB.MemberDecl<DB.Boolean, false>;
573
+ }>, []>>, false>;
574
+ withdrawalPrevention: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionWithdrawalPrevention", DB.Object<{
575
+ amount: DB.MemberDecl<DB.Integer, true>;
576
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionWithdrawalPreventionInterval", {
577
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
578
+ value: DB.MemberDecl<DB.Integer, true>;
579
+ }>, []>>>;
580
+ DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
581
+ dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
582
+ number: DB.MemberDecl<DB.Integer, true>;
583
+ sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
584
+ }>, []>>, true>;
585
+ }>, []>>>;
586
+ }, []>>, true>;
587
+ }>, []>>, true>;
553
588
  translations: DB.MemberDecl<DB.NestedEntityMap<"IntoxicantAddictionTranslation", {
554
589
  chance: DB.MemberDecl<DB.String, true>;
555
590
  }>, false>;
@@ -566,17 +601,24 @@ export declare const IntoxicantLegality: DB.TypeAlias<"IntoxicantLegality", DB.O
566
601
  }>, []>;
567
602
  export declare const IntoxicantAddiction: DB.TypeAlias<"IntoxicantAddiction", DB.Object<{
568
603
  chance: DB.MemberDecl<DB.Integer, false>;
569
- interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionInterval", {
570
- Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
571
- value: DB.MemberDecl<DB.Integer, true>;
572
- }>, []>>>;
573
- DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
574
- dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
575
- number: DB.MemberDecl<DB.Integer, true>;
576
- sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
577
- }>, []>>, true>;
578
- }>, []>>>;
579
- }, []>>, true>;
604
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionCheck", DB.Object<{
605
+ interval: DB.MemberDecl<DB.Integer, true>;
606
+ onlySameMonth: DB.MemberDecl<DB.Boolean, false>;
607
+ }>, []>>, false>;
608
+ withdrawalPrevention: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"IntoxicantAddictionWithdrawalPrevention", DB.Object<{
609
+ amount: DB.MemberDecl<DB.Integer, true>;
610
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"IntoxicantAddictionWithdrawalPreventionInterval", {
611
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantIntoxicantAddictionInterval", DB.Object<{
612
+ value: DB.MemberDecl<DB.Integer, true>;
613
+ }>, []>>>;
614
+ DiceBased: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DiceBasedIntoxicantAddictionInterval", DB.Object<{
615
+ dice: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
616
+ number: DB.MemberDecl<DB.Integer, true>;
617
+ sides: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DieType", DB.Integer, []>>, true>;
618
+ }>, []>>, true>;
619
+ }>, []>>>;
620
+ }, []>>, true>;
621
+ }>, []>>, true>;
580
622
  translations: DB.MemberDecl<DB.NestedEntityMap<"IntoxicantAddictionTranslation", {
581
623
  chance: DB.MemberDecl<DB.String, true>;
582
624
  }>, false>;
@@ -412,9 +412,13 @@ export const IntoxicantAddiction = DB.TypeAlias(import.meta.url, {
412
412
  comment: "The chance of getting addicted after an ingestion in percent. Some intoxicants do not have a contant chance of addiction.",
413
413
  type: DB.Integer({ minimum: 0, maximum: 100, multipleOf: 5 }),
414
414
  }),
415
- interval: DB.Required({
415
+ check: DB.Optional({
416
+ comment: "The interval at which to check for addiction after an ingestion. If set to one, every ingestion has to be checked for addiction. If set to two, every second ingestion has to be checked, and so on.",
417
+ type: DB.IncludeIdentifier(IntoxicantAddictionCheck),
418
+ }),
419
+ withdrawalPrevention: DB.Required({
416
420
  comment: "The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.",
417
- type: DB.IncludeIdentifier(IntoxicantAddictionInterval),
421
+ type: DB.IncludeIdentifier(IntoxicantAddictionWithdrawalPrevention),
418
422
  }),
419
423
  translations: NestedTranslationMap(DB.Optional, "IntoxicantAddiction", DB.Object({
420
424
  chance: DB.Required({
@@ -424,8 +428,34 @@ export const IntoxicantAddiction = DB.TypeAlias(import.meta.url, {
424
428
  })),
425
429
  }),
426
430
  });
427
- const IntoxicantAddictionInterval = DB.Enum(import.meta.url, {
428
- name: "IntoxicantAddictionInterval",
431
+ const IntoxicantAddictionCheck = DB.TypeAlias(import.meta.url, {
432
+ name: "IntoxicantAddictionCheck",
433
+ comment: "The interval at which to check for addiction after an ingestion. If set to one, every ingestion has to be checked for addiction. If set to two, every second ingestion has to be checked, and so on.",
434
+ type: () => DB.Object({
435
+ interval: DB.Required({
436
+ type: DB.Integer({ minimum: 1 }),
437
+ }),
438
+ onlySameMonth: DB.Optional({
439
+ comment: "If true, only ingestions in the same month count for the check interval.",
440
+ type: DB.Boolean(),
441
+ }),
442
+ }),
443
+ });
444
+ const IntoxicantAddictionWithdrawalPrevention = DB.TypeAlias(import.meta.url, {
445
+ name: "IntoxicantAddictionWithdrawalPrevention",
446
+ type: () => DB.Object({
447
+ amount: DB.Required({
448
+ comment: "The amount that must be ingested within the interval to prevent withdrawal symptoms.",
449
+ type: DB.Integer({ minimum: 1 }),
450
+ }),
451
+ interval: DB.Required({
452
+ comment: "The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.",
453
+ type: DB.IncludeIdentifier(IntoxicantAddictionWithdrawalPreventionInterval),
454
+ }),
455
+ }),
456
+ });
457
+ const IntoxicantAddictionWithdrawalPreventionInterval = DB.Enum(import.meta.url, {
458
+ name: "IntoxicantAddictionWithdrawalPreventionInterval",
429
459
  comment: "The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.",
430
460
  values: () => ({
431
461
  Constant: DB.EnumCase({ type: DB.IncludeIdentifier(ConstantIntoxicantAddictionInterval) }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optolith-database-schema",
3
- "version": "0.31.1",
3
+ "version": "0.31.3",
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",