From 0dcdda42f5d1ff1a4ebaabe4d46583d836b410b5 Mon Sep 17 00:00:00 2001 From: Lector Date: Fri, 26 Jun 2026 01:03:29 +0200 Subject: [PATCH 1/2] GeneralPrerequisite can now contain any Style-SA --- ...calAndBlessedAdvantagesAndDisadvantages.ts | 4 ++ src/types/prerequisites/PrerequisiteGroups.ts | 14 ++++++- .../prerequisites/single/StylePrerequisite.ts | 42 +++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/types/prerequisites/single/StylePrerequisite.ts diff --git a/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts b/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts index ed312eaa..4fef2ca5 100644 --- a/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts +++ b/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts @@ -81,6 +81,10 @@ const isPrerequisiteFor = ( case "PrimaryAttribute": case "BlessedTradition": case "MagicalTradition": + case "SkillStyle": + case "CombatStyle": + case "MagicalStyle": + case "LiturgicalStyle": case "RatedMinimumNumber": case "RatedSum": case "Enhancement": diff --git a/src/types/prerequisites/PrerequisiteGroups.ts b/src/types/prerequisites/PrerequisiteGroups.ts index 47ed01ef..b1e2a00f 100644 --- a/src/types/prerequisites/PrerequisiteGroups.ts +++ b/src/types/prerequisites/PrerequisiteGroups.ts @@ -8,7 +8,7 @@ import { InfluencePrerequisite } from "./single/InfluencePrerequisite.js" import { PactPrerequisite } from "./single/PactPrerequisite.js" import { PersonalityTraitPrerequisite } from "./single/PersonalityTraitPrerequisite.js" import { PrimaryAttributePrerequisite } from "./single/PrimaryAttributePrerequisite.js" -import { ProfessionPrerequisite } from "./single/ProfessionPrerequisite.ts" +import { ProfessionPrerequisite } from "./single/ProfessionPrerequisite.js" import { PublicationPrerequisite } from "./single/PublicationPrerequisite.js" import { RacePrerequisite } from "./single/RacePrerequisite.js" import { RatedMinimumNumberPrerequisite } from "./single/RatedMinimumNumberPrerequisite.js" @@ -24,6 +24,12 @@ import { BlessedTraditionPrerequisite, MagicalTraditionPrerequisite, } from "./single/TraditionPrerequisite.js" +import { + SkillStylePrerequisite, + CombatStylePrerequisite, + MagicalStylePrerequisite, + LiturgicalStylePrerequisite, +} from "./single/StylePrerequisite.js" export const RulePrerequisiteGroup = DB.Enum(import.meta.url, { name: "RulePrerequisiteGroup", @@ -59,6 +65,7 @@ export const PublicationPrerequisiteGroup = DB.Enum(import.meta.url, { export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, { name: "GeneralPrerequisiteGroup", values: () => ({ + Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }), Sex: DB.EnumCase({ type: DB.IncludeIdentifier(SexPrerequisite) }), Race: DB.EnumCase({ type: DB.IncludeIdentifier(RacePrerequisite) }), Culture: DB.EnumCase({ type: DB.IncludeIdentifier(CulturePrerequisite) }), @@ -67,9 +74,12 @@ export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, { State: DB.EnumCase({ type: DB.IncludeIdentifier(StatePrerequisite) }), Rule: DB.EnumCase({ type: DB.IncludeIdentifier(RulePrerequisite) }), PrimaryAttribute: DB.EnumCase({ type: DB.IncludeIdentifier(PrimaryAttributePrerequisite) }), - Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }), BlessedTradition: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionPrerequisite) }), MagicalTradition: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalTraditionPrerequisite) }), + SkillStyle: DB.EnumCase({ type: DB.IncludeIdentifier(SkillStylePrerequisite) }), + CombatStyle: DB.EnumCase({ type: DB.IncludeIdentifier(CombatStylePrerequisite) }), + MagicalStyle: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalStylePrerequisite) }), + LiturgicalStyle: DB.EnumCase({ type: DB.IncludeIdentifier(LiturgicalStylePrerequisite) }), Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }), RatedMinimumNumber: DB.EnumCase({ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisite) }), RatedSum: DB.EnumCase({ type: DB.IncludeIdentifier(RatedSumPrerequisite) }), diff --git a/src/types/prerequisites/single/StylePrerequisite.ts b/src/types/prerequisites/single/StylePrerequisite.ts new file mode 100644 index 00000000..77ad9627 --- /dev/null +++ b/src/types/prerequisites/single/StylePrerequisite.ts @@ -0,0 +1,42 @@ +import * as DB from "tsondb/schema/dsl" +import { DisplayOption } from "../DisplayOption.js" + +export const SkillStylePrerequisite = DB.TypeAlias(import.meta.url, { + name: "SkillStylePrerequisite", + type: () => + DB.Object({ + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) + +export const CombatStylePrerequisite = DB.TypeAlias(import.meta.url, { + name: "CombatStylePrerequisite", + type: () => + DB.Object({ + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) + +export const MagicalStylePrerequisite = DB.TypeAlias(import.meta.url, { + name: "MagicalStylePrerequisite", + type: () => + DB.Object({ + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) + +export const LiturgicalStylePrerequisite = DB.TypeAlias(import.meta.url, { + name: "LiturgicalStylePrerequisite", + type: () => + DB.Object({ + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) From 5d8616dd56eb1dcf0836b6e79f6fef21705e4d86 Mon Sep 17 00:00:00 2001 From: Lector Date: Sat, 27 Jun 2026 16:27:18 +0200 Subject: [PATCH 2/2] StylePrerequisite.ts is now a single type with enum. --- ...calAndBlessedAdvantagesAndDisadvantages.ts | 5 +-- src/types/prerequisites/PrerequisiteGroups.ts | 12 ++----- .../prerequisites/single/StylePrerequisite.ts | 36 +++++-------------- 3 files changed, 11 insertions(+), 42 deletions(-) diff --git a/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts b/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts index 4fef2ca5..d0e35a1b 100644 --- a/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts +++ b/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts @@ -81,10 +81,7 @@ const isPrerequisiteFor = ( case "PrimaryAttribute": case "BlessedTradition": case "MagicalTradition": - case "SkillStyle": - case "CombatStyle": - case "MagicalStyle": - case "LiturgicalStyle": + case "Style": case "RatedMinimumNumber": case "RatedSum": case "Enhancement": diff --git a/src/types/prerequisites/PrerequisiteGroups.ts b/src/types/prerequisites/PrerequisiteGroups.ts index b1e2a00f..12bc4c03 100644 --- a/src/types/prerequisites/PrerequisiteGroups.ts +++ b/src/types/prerequisites/PrerequisiteGroups.ts @@ -24,12 +24,7 @@ import { BlessedTraditionPrerequisite, MagicalTraditionPrerequisite, } from "./single/TraditionPrerequisite.js" -import { - SkillStylePrerequisite, - CombatStylePrerequisite, - MagicalStylePrerequisite, - LiturgicalStylePrerequisite, -} from "./single/StylePrerequisite.js" +import { StylePrerequisite } from "./single/StylePrerequisite.js" export const RulePrerequisiteGroup = DB.Enum(import.meta.url, { name: "RulePrerequisiteGroup", @@ -76,10 +71,7 @@ export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, { PrimaryAttribute: DB.EnumCase({ type: DB.IncludeIdentifier(PrimaryAttributePrerequisite) }), BlessedTradition: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionPrerequisite) }), MagicalTradition: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalTraditionPrerequisite) }), - SkillStyle: DB.EnumCase({ type: DB.IncludeIdentifier(SkillStylePrerequisite) }), - CombatStyle: DB.EnumCase({ type: DB.IncludeIdentifier(CombatStylePrerequisite) }), - MagicalStyle: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalStylePrerequisite) }), - LiturgicalStyle: DB.EnumCase({ type: DB.IncludeIdentifier(LiturgicalStylePrerequisite) }), + Style: DB.EnumCase({ type: DB.IncludeIdentifier(StylePrerequisite) }), Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }), RatedMinimumNumber: DB.EnumCase({ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisite) }), RatedSum: DB.EnumCase({ type: DB.IncludeIdentifier(RatedSumPrerequisite) }), diff --git a/src/types/prerequisites/single/StylePrerequisite.ts b/src/types/prerequisites/single/StylePrerequisite.ts index 77ad9627..393d5592 100644 --- a/src/types/prerequisites/single/StylePrerequisite.ts +++ b/src/types/prerequisites/single/StylePrerequisite.ts @@ -1,42 +1,22 @@ import * as DB from "tsondb/schema/dsl" import { DisplayOption } from "../DisplayOption.js" -export const SkillStylePrerequisite = DB.TypeAlias(import.meta.url, { +export const StylePrerequisite = DB.TypeAlias(import.meta.url, { name: "SkillStylePrerequisite", type: () => DB.Object({ - display_option: DB.Optional({ - type: DB.IncludeIdentifier(DisplayOption), + category: DB.Required({ + type: DB.IncludeIdentifier(StyleCategory), }), - }), -}) - -export const CombatStylePrerequisite = DB.TypeAlias(import.meta.url, { - name: "CombatStylePrerequisite", - type: () => - DB.Object({ display_option: DB.Optional({ type: DB.IncludeIdentifier(DisplayOption), }), }), }) -export const MagicalStylePrerequisite = DB.TypeAlias(import.meta.url, { - name: "MagicalStylePrerequisite", - type: () => - DB.Object({ - display_option: DB.Optional({ - type: DB.IncludeIdentifier(DisplayOption), - }), - }), -}) - -export const LiturgicalStylePrerequisite = DB.TypeAlias(import.meta.url, { - name: "LiturgicalStylePrerequisite", - type: () => - DB.Object({ - display_option: DB.Optional({ - type: DB.IncludeIdentifier(DisplayOption), - }), - }), +export const StyleCategory = DB.Enum(import.meta.url, { + name: "StyleCategory", + values: () => ({ + SkillStyle: DB.EnumCase({ type: null }), + }), })