@optolith/database-schema 0.58.0 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
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.59.0](https://github.com/Optolith/database-schema/compare/v0.58.0...v0.59.0) (2026-09-12)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * magical dis-/advantage subtypes
10
+
11
+ ### Features
12
+
13
+ * magical dis-/advantage subtypes ([986a5a9](https://github.com/Optolith/database-schema/commit/986a5a958f4d2f056ae47bdc6fe3f8627359ced1)), closes [#147](https://github.com/Optolith/database-schema/issues/147)
5
14
  ## [0.58.0](https://github.com/Optolith/database-schema/compare/v0.57.0...v0.58.0) (2026-09-11)
6
15
 
7
16
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -219,6 +219,7 @@ export type EnumMap = {
219
219
  AdvancedSpecialAbility: AdvancedSpecialAbility<unknown>
220
220
  AdvancedSpecialAbilityRestrictedOptionIdentifier: AdvancedSpecialAbilityRestrictedOptionIdentifier
221
221
  AdvantageDisadvantagePrerequisiteGroup: AdvantageDisadvantagePrerequisiteGroup
222
+ AdvantageDisadvantageSubtype: AdvantageDisadvantageSubtype
222
223
  AdventurePointsDependingOnActiveInstances: AdventurePointsDependingOnActiveInstances
223
224
  AdventurePointsDependingOnActiveInstancesExpressionValue: AdventurePointsDependingOnActiveInstancesExpressionValue
224
225
  AdventurePointsValue: AdventurePointsValue
@@ -2440,6 +2441,10 @@ export interface Locale {
2440
2441
  "only those with at least one blunt side": string
2441
2442
  "only {$nameWithLevel}": string & { __params: { "nameWithLevel": StringableTranslationParameter } }
2442
2443
  "only {$weapons}": string & { __params: { "weapons": StringableTranslationParameter } }
2444
+ "Magical Rank": string
2445
+ "Magical Title": string
2446
+ "Magical Honor": string
2447
+ "Magical Punishment": string
2443
2448
  ".input {$ord :number} {{{$ord}. attack}}": string & { __params: { "ord": number } }
2444
2449
  ".input {$ord :number} {{{$ord}. throw}}": string & { __params: { "ord": number } }
2445
2450
  "depending on the level of the special ability {$name}": string & { __params: { "name": StringableTranslationParameter } }
@@ -3037,6 +3042,8 @@ export interface Advantage {
3037
3042
  */
3038
3043
  levels?: number
3039
3044
 
3045
+ subtype?: AdvantageDisadvantageSubtype
3046
+
3040
3047
  /**
3041
3048
  * Rules for building the name of an activatable. These rules are used when the activatable doesn't have a custom name specified.
3042
3049
  */
@@ -3142,6 +3149,20 @@ export interface AdvantageTranslation {
3142
3149
  errata?: Errata
3143
3150
  }
3144
3151
 
3152
+ export type AdvantageDisadvantageSubtype =
3153
+ | {
3154
+ kind: "MagicalRank"
3155
+ }
3156
+ | {
3157
+ kind: "MagicalTitle"
3158
+ }
3159
+ | {
3160
+ kind: "MagicalHonor"
3161
+ }
3162
+ | {
3163
+ kind: "MagicalPunishment"
3164
+ }
3165
+
3145
3166
  export interface GeneralSelectOption {
3146
3167
  /**
3147
3168
  * The entry that contains select option.
@@ -3441,6 +3462,8 @@ export interface Disadvantage {
3441
3462
  */
3442
3463
  levels?: number
3443
3464
 
3465
+ subtype?: AdvantageDisadvantageSubtype
3466
+
3444
3467
  /**
3445
3468
  * Rules for building the name of an activatable. These rules are used when the activatable doesn't have a custom name specified.
3446
3469
  */
@@ -1,6 +1,12 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  export declare const Advantage: DB.Entity<"Advantage", {
3
3
  levels: DB.MemberDecl<DB.Integer, false>;
4
+ subtype: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"AdvantageDisadvantageSubtype", {
5
+ MagicalRank: DB.EnumCase<null>;
6
+ MagicalTitle: DB.EnumCase<null>;
7
+ MagicalHonor: DB.EnumCase<null>;
8
+ MagicalPunishment: DB.EnumCase<null>;
9
+ }, []>>, false>;
4
10
  nameBuilderRules: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatableNameBuilderRules", DB.Object<{
5
11
  levelPlacement: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableNameLevelPlacement", {
6
12
  BeforeOptions: DB.EnumCase<null>;
@@ -2,6 +2,7 @@ import * as DB from "tsondb/schema/dsl";
2
2
  import { input, levels, maximum, name, name_in_library, range_l10n, rules } from "./_Activatable.js";
3
3
  import { ap_value, ap_value_append, ap_value_l10n } from "./_ActivatableAdventurePointsValue.js";
4
4
  import { automatic_entries } from "./_ActivatableAutomatic.js";
5
+ import { subtype } from "./_ActivatableMagical.js";
5
6
  import { activatableDisplayNameCustomizer, nameBuilderRules } from "./_ActivatableNames.js";
6
7
  import { explicit_select_options, select_options } from "./_ActivatableSelectOptions.js";
7
8
  import { skill_applications, skill_uses } from "./_ActivatableSkillApplicationsAndUses.js";
@@ -14,6 +15,7 @@ export const Advantage = DB.Entity(import.meta.url, {
14
15
  namePlural: "Advantages",
15
16
  type: () => DB.Object({
16
17
  levels,
18
+ subtype,
17
19
  nameBuilderRules,
18
20
  select_options,
19
21
  explicit_select_options,
@@ -1,6 +1,12 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  export declare const Disadvantage: DB.Entity<"Disadvantage", {
3
3
  levels: DB.MemberDecl<DB.Integer, false>;
4
+ subtype: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"AdvantageDisadvantageSubtype", {
5
+ MagicalRank: DB.EnumCase<null>;
6
+ MagicalTitle: DB.EnumCase<null>;
7
+ MagicalHonor: DB.EnumCase<null>;
8
+ MagicalPunishment: DB.EnumCase<null>;
9
+ }, []>>, false>;
4
10
  nameBuilderRules: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatableNameBuilderRules", DB.Object<{
5
11
  levelPlacement: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableNameLevelPlacement", {
6
12
  BeforeOptions: DB.EnumCase<null>;
@@ -1,6 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { input, levels, maximum, name, name_in_library, rules } from "./_Activatable.js";
3
3
  import { ap_value, ap_value_append, ap_value_l10n } from "./_ActivatableAdventurePointsValue.js";
4
+ import { subtype } from "./_ActivatableMagical.js";
4
5
  import { activatableDisplayNameCustomizer, nameBuilderRules } from "./_ActivatableNames.js";
5
6
  import { explicit_select_options, select_options } from "./_ActivatableSelectOptions.js";
6
7
  import { skill_applications, skill_uses } from "./_ActivatableSkillApplicationsAndUses.js";
@@ -13,6 +14,7 @@ export const Disadvantage = DB.Entity(import.meta.url, {
13
14
  namePlural: "Disadvantages",
14
15
  type: () => DB.Object({
15
16
  levels,
17
+ subtype,
16
18
  nameBuilderRules,
17
19
  select_options,
18
20
  explicit_select_options,
@@ -1374,6 +1374,10 @@ export declare const Locale: DB.Entity<"Locale", {
1374
1374
  "only those with at least one blunt side": null;
1375
1375
  "only {$nameWithLevel}": null;
1376
1376
  "only {$weapons}": null;
1377
+ "Magical Rank": null;
1378
+ "Magical Title": null;
1379
+ "Magical Honor": null;
1380
+ "Magical Punishment": null;
1377
1381
  ".input {$ord :number} {{{$ord}. attack}}": null;
1378
1382
  ".input {$ord :number} {{{$ord}. throw}}": null;
1379
1383
  "depending on the level of the special ability {$name}": null;
@@ -1409,6 +1409,11 @@ export const Locale = DB.Entity(import.meta.url, {
1409
1409
  "only those with at least one blunt side": null,
1410
1410
  "only {$nameWithLevel}": null,
1411
1411
  "only {$weapons}": null,
1412
+ // advantages/disadvantages
1413
+ "Magical Rank": null,
1414
+ "Magical Title": null,
1415
+ "Magical Honor": null,
1416
+ "Magical Punishment": null,
1412
1417
  // combat special ability -- penalty
1413
1418
  ".input {$ord :number} {{{$ord}. attack}}": null,
1414
1419
  ".input {$ord :number} {{{$ord}. throw}}": null,
@@ -0,0 +1,7 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const subtype: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"AdvantageDisadvantageSubtype", {
3
+ MagicalRank: DB.EnumCase<null>;
4
+ MagicalTitle: DB.EnumCase<null>;
5
+ MagicalHonor: DB.EnumCase<null>;
6
+ MagicalPunishment: DB.EnumCase<null>;
7
+ }, []>>, false>;
@@ -0,0 +1,11 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ const AdvantageDisadvantageSubtype = DB.Enum(import.meta.url, {
3
+ name: "AdvantageDisadvantageSubtype",
4
+ values: () => ({
5
+ MagicalRank: DB.EnumCase({ type: null }),
6
+ MagicalTitle: DB.EnumCase({ type: null }),
7
+ MagicalHonor: DB.EnumCase({ type: null }),
8
+ MagicalPunishment: DB.EnumCase({ type: null }),
9
+ }),
10
+ });
11
+ export const subtype = DB.Optional({ type: DB.IncludeIdentifier(AdvantageDisadvantageSubtype) });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.58.0",
3
+ "version": "0.59.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",