optolith-database-schema 0.31.0 → 0.31.2

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.2](https://github.com/elyukai/optolith-database-schema/compare/v0.31.1...v0.31.2) (2026-02-15)
6
+
7
+
8
+ ### Features
9
+
10
+ * add translations for poisons, elixirs, sex practices, diseases and personality traits ([3561289](https://github.com/elyukai/optolith-database-schema/commit/3561289fc1283bcecde3065bee5850b166ba3270))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * incorrect comment ([c3a6124](https://github.com/elyukai/optolith-database-schema/commit/c3a61244cec93af6396f723ee972e7911f98c1fa))
16
+ * poison addition interpretation ([a24aeb6](https://github.com/elyukai/optolith-database-schema/commit/a24aeb6dd1cf170afe0d7de1b23f5cdf0c11b5b3))
17
+
18
+ ## [0.31.1](https://github.com/elyukai/optolith-database-schema/compare/v0.31.0...v0.31.1) (2026-02-15)
19
+
20
+
21
+ ### Features
22
+
23
+ * add rest of translations for equipment ([fa4b7b5](https://github.com/elyukai/optolith-database-schema/commit/fa4b7b5e68491aa367e65f14ebf6afdf636da1da))
24
+
5
25
  ## [0.31.0](https://github.com/elyukai/optolith-database-schema/compare/v0.30.1...v0.31.0) (2026-02-14)
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
@@ -1227,6 +1229,7 @@ export interface Locale {
1227
1229
  "general.pricevalue": string
1228
1230
  "general.lengthvalue": string
1229
1231
  "D": string
1232
+ "{$count}D{$sides}": string & { __params: { "count": StringableTranslationParameter; "sides": StringableTranslationParameter } }
1230
1233
  "general.none": string
1231
1234
  "general.or": string
1232
1235
  "general.and": string
@@ -2285,11 +2288,100 @@ export interface Locale {
2285
2288
  "Cost": string
2286
2289
  "Total": string
2287
2290
  ".input {$value :number} {{{$value} pounds}}": string & { __params: { "value": number } }
2291
+ "{$value} pounds": string & { __params: { "value": StringableTranslationParameter } }
2288
2292
  ".input {$value :number} {{{$value} silverthalers}}": string & { __params: { "value": number } }
2293
+ "{$value} silverthalers": string & { __params: { "value": StringableTranslationParameter } }
2289
2294
  ".input {$from :number} .input {$to :number} {{{$from}–{$to} pounds}}": string & { __params: { "from": number; "to": number } }
2290
2295
  ".input {$from :number} .input {$to :number} {{{$from}–{$to} silverthalers}}": string & { __params: { "from": number; "to": number } }
2296
+ "free": string
2297
+ "various": string
2298
+ "invaluable": string
2299
+ "Damage Points": string
2300
+ "Primary Attribute + Damage Threshold": string
2301
+ "Attack/Parry Modifier": string
2302
+ "Reach": string
2303
+ "Weight (Bronze/Silver/Gold)": string
2304
+ "Length": string
2305
+ "Cost (Bronze/Silver/Gold)": string
2306
+ "Reload Time": string
2307
+ "Range Brackets": string
2308
+ "Ammunition": string
2309
+ "Protection": string
2310
+ "Additional Penalties": string
2311
+ "Burning Time": string
2312
+ "Color": string
2313
+ "Language/Script": string
2314
+ "Complexity": string
2315
+ "Weapon Advantage": string
2316
+ "Weapon Disadvantage": string
2317
+ "Armor Advantage": string
2318
+ "Armor Disadvantage": string
2319
+ "Combat Technique {$name}": string & { __params: { "name": StringableTranslationParameter } }
2320
+ "Primitive": string
2321
+ "Simple": string
2322
+ "Complex": string
2291
2323
  "Various": string
2292
- "Invaluable": string
2324
+ "Parrying weapon (PA bonus +1 for the main weapon)": string
2325
+ "To buy a {$itemName} during hero creation, the character must have Tradition ({$traditions}).": string & { __params: { "itemName": StringableTranslationParameter; "traditions": StringableTranslationParameter } }
2326
+ "Sanctified ({$sanctifiedTraditions}); only Blessed Ones of {$traditions} may purchase weapons sanctified by {$traditions}, respectively.": string & { __params: { "sanctifiedTraditions": StringableTranslationParameter; "traditions": StringableTranslationParameter } }
2327
+ "Sanctified ({$tradition}); only Blessed Ones of {$tradition} may purchase weapons sanctified by {$tradition}.": string & { __params: { "tradition": StringableTranslationParameter } }
2328
+ "To buy a {$name} during hero creation, the character must be from the culture of the {$cultures}.": string & { __params: { "name": StringableTranslationParameter; "cultures": StringableTranslationParameter } }
2329
+ "To buy a {$itemName} during hero creation, the character must have a shamanistic tradition.": string & { __params: { "itemName": StringableTranslationParameter } }
2330
+ "To buy a {$name} during hero creation, the character must be from a culture common to the race of {$races}.": string & { __params: { "name": StringableTranslationParameter; "races": StringableTranslationParameter } }
2331
+ ".input {$value :number} {{{$value} inches}}": string & { __params: { "value": number } }
2332
+ "unlimited": string
2333
+ "Structure Points": string
2334
+ ".input {$value :number} {{{$value} Structure Points}}": string & { __params: { "value": number } }
2335
+ "{$value} Structure Points": string & { __params: { "value": StringableTranslationParameter } }
2336
+ "{$types} poison": string & { __params: { "types": StringableTranslationParameter } }
2337
+ "Weapon": string
2338
+ "Ingestion": string
2339
+ "Inhalation": string
2340
+ "Contact": 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
+ "Side Effect": string
2366
+ "Overdose": string
2367
+ "Legality": string
2368
+ "legal": string
2369
+ "illegal": string
2370
+ "Addiction": string
2371
+ "Value/Cost": string
2372
+ "cannot be extracted": string
2373
+ ".input {$hiddenCount :number} {{Alternative Names}}": string & { __params: { "hiddenCount": number } }
2374
+ "Failed": string
2375
+ "Progress": string
2376
+ "Incubation Time": string
2377
+ "Damage": string
2378
+ "Causes": string
2379
+ "Treatment": string
2380
+ "Antidote": string
2381
+ ".input {$value :number} {{{$value}%}}": string & { __params: { "value": number } }
2382
+ "Animal Types": string
2383
+ "Communicability to Intelligent Creatures": string
2384
+ "Can be combined with": string
2293
2385
  }
2294
2386
  }
2295
2387
 
@@ -20561,7 +20653,7 @@ export interface ElixirTranslationTranslation {
20561
20653
  description?: string
20562
20654
 
20563
20655
  /**
20564
- * The recipe’s description.
20656
+ * Special information about the elixir.
20565
20657
  */
20566
20658
  special?: string
20567
20659
 
@@ -21890,10 +21982,15 @@ export interface IntoxicantAddiction {
21890
21982
  */
21891
21983
  chance?: number
21892
21984
 
21985
+ /**
21986
+ * 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.
21987
+ */
21988
+ check: IntoxicantAddictionCheck
21989
+
21893
21990
  /**
21894
21991
  * The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.
21895
21992
  */
21896
- interval: IntoxicantAddictionInterval
21993
+ withdrawalPrevention: IntoxicantAddictionWithdrawalPrevention
21897
21994
 
21898
21995
  /**
21899
21996
  * All translations for the entry, identified by IETF language tag (BCP47).
@@ -21910,10 +22007,34 @@ export interface IntoxicantAddictionTranslation {
21910
22007
  chance: string
21911
22008
  }
21912
22009
 
22010
+ /**
22011
+ * 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.
22012
+ */
22013
+ export interface IntoxicantAddictionCheck {
22014
+ interval: number
22015
+
22016
+ /**
22017
+ * If true, only ingestions in the same month count for the check interval.
22018
+ */
22019
+ onlySameMonth?: boolean
22020
+ }
22021
+
22022
+ export interface IntoxicantAddictionWithdrawalPrevention {
22023
+ /**
22024
+ * The amount that must be ingested within the interval to prevent withdrawal symptoms.
22025
+ */
22026
+ amount: number
22027
+
22028
+ /**
22029
+ * The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.
22030
+ */
22031
+ interval: IntoxicantAddictionWithdrawalPreventionInterval
22032
+ }
22033
+
21913
22034
  /**
21914
22035
  * The maximum interval at which it, while addicted, must be ingested to not suffer from withdrawal symptoms.
21915
22036
  */
21916
- export type IntoxicantAddictionInterval =
22037
+ export type IntoxicantAddictionWithdrawalPreventionInterval =
21917
22038
  | {
21918
22039
  kind: "Constant"
21919
22040
  Constant: ConstantIntoxicantAddictionInterval
@@ -217,6 +217,7 @@ export declare const Locale: DB.Entity<"Locale", {
217
217
  * As in *2D6*.
218
218
  */
219
219
  D: null;
220
+ "{$count}D{$sides}": null;
220
221
  "general.none": null;
221
222
  "general.or": null;
222
223
  "general.and": null;
@@ -1368,11 +1369,100 @@ export declare const Locale: DB.Entity<"Locale", {
1368
1369
  Cost: null;
1369
1370
  Total: null;
1370
1371
  ".input {$value :number} {{{$value} pounds}}": null;
1372
+ "{$value} pounds": null;
1371
1373
  ".input {$value :number} {{{$value} silverthalers}}": null;
1374
+ "{$value} silverthalers": null;
1372
1375
  ".input {$from :number} .input {$to :number} {{{$from}\u2013{$to} pounds}}": null;
1373
1376
  ".input {$from :number} .input {$to :number} {{{$from}\u2013{$to} silverthalers}}": null;
1377
+ free: null;
1378
+ various: null;
1379
+ invaluable: null;
1380
+ "Damage Points": null;
1381
+ "Primary Attribute + Damage Threshold": null;
1382
+ "Attack/Parry Modifier": null;
1383
+ Reach: null;
1384
+ "Weight (Bronze/Silver/Gold)": null;
1385
+ Length: null;
1386
+ "Cost (Bronze/Silver/Gold)": null;
1387
+ "Reload Time": null;
1388
+ "Range Brackets": null;
1389
+ Ammunition: null;
1390
+ Protection: null;
1391
+ "Additional Penalties": null;
1392
+ "Burning Time": null;
1393
+ Color: null;
1394
+ "Language/Script": null;
1395
+ Complexity: null;
1396
+ "Weapon Advantage": null;
1397
+ "Weapon Disadvantage": null;
1398
+ "Armor Advantage": null;
1399
+ "Armor Disadvantage": null;
1400
+ "Combat Technique {$name}": null;
1401
+ Primitive: null;
1402
+ Simple: null;
1403
+ Complex: null;
1374
1404
  Various: null;
1375
- Invaluable: null;
1405
+ "Parrying weapon (PA bonus +1 for the main weapon)": null;
1406
+ "To buy a {$itemName} during hero creation, the character must have Tradition ({$traditions}).": null;
1407
+ "Sanctified ({$sanctifiedTraditions}); only Blessed Ones of {$traditions} may purchase weapons sanctified by {$traditions}, respectively.": null;
1408
+ "Sanctified ({$tradition}); only Blessed Ones of {$tradition} may purchase weapons sanctified by {$tradition}.": null;
1409
+ "To buy a {$name} during hero creation, the character must be from the culture of the {$cultures}.": null;
1410
+ "To buy a {$itemName} during hero creation, the character must have a shamanistic tradition.": null;
1411
+ "To buy a {$name} during hero creation, the character must be from a culture common to the race of {$races}.": null;
1412
+ ".input {$value :number} {{{$value} inches}}": null;
1413
+ unlimited: null;
1414
+ "Structure Points": null;
1415
+ ".input {$value :number} {{{$value} Structure Points}}": null;
1416
+ "{$value} Structure Points": null;
1417
+ "{$types} poison": null;
1418
+ Weapon: null;
1419
+ Ingestion: null;
1420
+ Inhalation: null;
1421
+ Contact: 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
+ "Side Effect": null;
1447
+ Overdose: null;
1448
+ Legality: null;
1449
+ legal: null;
1450
+ illegal: null;
1451
+ Addiction: null;
1452
+ "Value/Cost": null;
1453
+ "cannot be extracted": null;
1454
+ ".input {$hiddenCount :number} {{Alternative Names}}": null;
1455
+ Failed: null;
1456
+ Progress: null;
1457
+ "Incubation Time": null;
1458
+ Damage: null;
1459
+ Causes: null;
1460
+ Treatment: null;
1461
+ Antidote: null;
1462
+ ".input {$value :number} {{{$value}%}}": null;
1463
+ "Animal Types": null;
1464
+ "Communicability to Intelligent Creatures": null;
1465
+ "Can be combined with": null;
1376
1466
  }>, false>;
1377
1467
  }, undefined>;
1378
1468
  export declare const NestedTranslationMap: <Name extends string, T extends Record<string, DB.MemberDecl>, R extends boolean>(MemberDeclCreator: <T_1 extends DB.Type>(options: {
@@ -237,6 +237,7 @@ export const Locale = DB.Entity(import.meta.url, {
237
237
  * As in *2D6*.
238
238
  */
239
239
  "D": null,
240
+ "{$count}D{$sides}": null,
240
241
  "general.none": null,
241
242
  "general.or": null,
242
243
  "general.and": null,
@@ -1407,11 +1408,104 @@ export const Locale = DB.Entity(import.meta.url, {
1407
1408
  "Cost": null,
1408
1409
  "Total": null,
1409
1410
  ".input {$value :number} {{{$value} pounds}}": null,
1411
+ "{$value} pounds": null,
1410
1412
  ".input {$value :number} {{{$value} silverthalers}}": null,
1413
+ "{$value} silverthalers": null,
1411
1414
  ".input {$from :number} .input {$to :number} {{{$from}–{$to} pounds}}": null,
1412
1415
  ".input {$from :number} .input {$to :number} {{{$from}–{$to} silverthalers}}": null,
1416
+ "free": null,
1417
+ "various": null,
1418
+ "invaluable": null,
1419
+ "Damage Points": null,
1420
+ "Primary Attribute + Damage Threshold": null,
1421
+ "Attack/Parry Modifier": null,
1422
+ "Reach": null,
1423
+ "Weight (Bronze/Silver/Gold)": null,
1424
+ "Length": null,
1425
+ "Cost (Bronze/Silver/Gold)": null,
1426
+ "Reload Time": null,
1427
+ "Range Brackets": null,
1428
+ "Ammunition": null,
1429
+ "Protection": null,
1430
+ "Additional Penalties": null,
1431
+ "Burning Time": null,
1432
+ "Color": null,
1433
+ "Language/Script": null,
1434
+ "Complexity": null,
1435
+ "Weapon Advantage": null,
1436
+ "Weapon Disadvantage": null,
1437
+ "Armor Advantage": null,
1438
+ "Armor Disadvantage": null,
1439
+ "Combat Technique {$name}": null,
1440
+ "Primitive": null,
1441
+ "Simple": null,
1442
+ "Complex": null,
1413
1443
  "Various": null,
1414
- "Invaluable": null,
1444
+ "Parrying weapon (PA bonus +1 for the main weapon)": null,
1445
+ "To buy a {$itemName} during hero creation, the character must have Tradition ({$traditions}).": null,
1446
+ "Sanctified ({$sanctifiedTraditions}); only Blessed Ones of {$traditions} may purchase weapons sanctified by {$traditions}, respectively.": null,
1447
+ "Sanctified ({$tradition}); only Blessed Ones of {$tradition} may purchase weapons sanctified by {$tradition}.": null,
1448
+ "To buy a {$name} during hero creation, the character must be from the culture of the {$cultures}.": null,
1449
+ "To buy a {$itemName} during hero creation, the character must have a shamanistic tradition.": null,
1450
+ "To buy a {$name} during hero creation, the character must be from a culture common to the race of {$races}.": null,
1451
+ ".input {$value :number} {{{$value} inches}}": null,
1452
+ "unlimited": null,
1453
+ "Structure Points": null,
1454
+ ".input {$value :number} {{{$value} Structure Points}}": null,
1455
+ "{$value} Structure Points": null,
1456
+ // poisons/elixirs
1457
+ "{$types} poison": null,
1458
+ "Weapon": null,
1459
+ "Ingestion": null,
1460
+ "Inhalation": null,
1461
+ "Contact": 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
+ "Side Effect": null,
1487
+ "Overdose": null,
1488
+ "Legality": null,
1489
+ "legal": null,
1490
+ "illegal": null,
1491
+ "Addiction": null,
1492
+ "Value/Cost": null,
1493
+ "cannot be extracted": null,
1494
+ ".input {$hiddenCount :number} {{Alternative Names}}": null,
1495
+ // sex practices
1496
+ "Failed": null,
1497
+ // diseases
1498
+ "Progress": null,
1499
+ "Incubation Time": null,
1500
+ "Damage": null,
1501
+ "Causes": null,
1502
+ "Treatment": null,
1503
+ "Antidote": null,
1504
+ ".input {$value :number} {{{$value}%}}": null,
1505
+ "Animal Types": null,
1506
+ "Communicability to Intelligent Creatures": null,
1507
+ // personality traits
1508
+ "Can be combined with": null,
1415
1509
  }, { allKeysAreRequired: true }),
1416
1510
  }),
1417
1511
  }),
@@ -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
+ }>, []>>, true>;
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
+ }>, []>>, true>;
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
+ }>, []>>, true>;
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
+ }>, []>>, true>;
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
+ }>, []>>, true>;
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
+ }>, []>>, true>;
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.Required({
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.0",
3
+ "version": "0.31.2",
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",