optolith-database-schema 0.29.1 → 0.30.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 (42) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/gen/types.d.ts +143 -45
  3. package/lib/types/DerivedCharacteristic.d.ts +1 -0
  4. package/lib/types/DerivedCharacteristic.js +4 -0
  5. package/lib/types/Locale.d.ts +78 -2
  6. package/lib/types/Locale.js +84 -2
  7. package/lib/types/_ActivatableCombat.d.ts +9 -11
  8. package/lib/types/_ActivatableCombat.js +12 -28
  9. package/lib/types/_ActivatableNonMundane.d.ts +18 -38
  10. package/lib/types/_ActivatableNonMundane.js +55 -23
  11. package/lib/types/_IdentifierGroup.d.ts +4 -0
  12. package/lib/types/_IdentifierGroup.js +7 -0
  13. package/lib/types/rule/FocusRule.d.ts +1 -1
  14. package/lib/types/rule/FocusRule.js +1 -1
  15. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +9 -11
  16. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +9 -11
  17. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +9 -11
  18. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +9 -11
  19. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +9 -11
  20. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +2 -2
  21. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +9 -19
  22. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +9 -19
  23. package/lib/types/traditionArtifacts/Beutelzauber.d.ts +9 -19
  24. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +9 -19
  25. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +9 -19
  26. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +9 -19
  27. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +9 -19
  28. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +9 -19
  29. package/lib/types/traditionArtifacts/Haubenzauber.d.ts +9 -19
  30. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +9 -19
  31. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +9 -19
  32. package/lib/types/traditionArtifacts/Kristallkugelzauber.d.ts +9 -19
  33. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +9 -19
  34. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +9 -19
  35. package/lib/types/traditionArtifacts/SickleRitual.d.ts +9 -19
  36. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +9 -19
  37. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +9 -19
  38. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +9 -19
  39. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +9 -19
  40. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +9 -19
  41. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +9 -19
  42. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
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.30.0](https://github.com/elyukai/optolith-database-schema/compare/v0.29.1...v0.30.0) (2026-02-12)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * adjust for activatable display
11
+ * require focus rule subjects
12
+ * more advanced identifier options
13
+
14
+ ### Features
15
+
16
+ * add more translations ([b2a0d58](https://github.com/elyukai/optolith-database-schema/commit/b2a0d5820240fd3b89461c1742b894981c1acdbd))
17
+ * add optional derived characteristic description ([403d4bc](https://github.com/elyukai/optolith-database-schema/commit/403d4bc1e3768a78d4bc71778c80b29c3a13d91e))
18
+ * adjust for activatable display ([40c07ba](https://github.com/elyukai/optolith-database-schema/commit/40c07baa30361b7955f478b840717e06767054cb))
19
+ * more advanced identifier options ([e0ac1e3](https://github.com/elyukai/optolith-database-schema/commit/e0ac1e31e4c9d19f6dacff60a120c08311a165bf)), closes [#120](https://github.com/elyukai/optolith-database-schema/issues/120)
20
+ * require focus rule subjects ([78b69fb](https://github.com/elyukai/optolith-database-schema/commit/78b69fbe7063ba39301392382f8e8429284e7220))
21
+
5
22
  ## [0.29.1](https://github.com/elyukai/optolith-database-schema/compare/v0.29.0...v0.29.1) (2026-02-09)
6
23
 
7
24
 
package/gen/types.d.ts CHANGED
@@ -198,6 +198,7 @@ export type EnumMap = {
198
198
  AbilityAdjustment: AbilityAdjustment
199
199
  ActivatableIdentifier: ActivatableIdentifier
200
200
  ActivatableSkillEffect: ActivatableSkillEffect
201
+ AdvancedSkillStyleSpecialAbilityIdentifier: AdvancedSkillStyleSpecialAbilityIdentifier
201
202
  AdvancedSpecialAbility: AdvancedSpecialAbility<unknown>
202
203
  AdvancedSpecialAbilityRestrictedOptionIdentifier: AdvancedSpecialAbilityRestrictedOptionIdentifier
203
204
  AdvantageDisadvantagePrerequisiteGroup: AdvantageDisadvantagePrerequisiteGroup
@@ -220,6 +221,7 @@ export type EnumMap = {
220
221
  ApplicableSpecificCombatTechniquesRestriction: ApplicableSpecificCombatTechniquesRestriction
221
222
  ApplicationCategory: ApplicationCategory
222
223
  ArcaneEnergyCost: ArcaneEnergyCost
224
+ ArcaneEnergyCostByLevelStyle: ArcaneEnergyCostByLevelStyle
223
225
  ArcaneTraditionPrerequisiteGroup: ArcaneTraditionPrerequisiteGroup
224
226
  ArmorComplexity: ArmorComplexity
225
227
  AutomaticEntryAction: AutomaticEntryAction
@@ -447,12 +449,12 @@ export type TypeAliasMap = {
447
449
  ApplicableCombatTechniquesLevelRestriction: ApplicableCombatTechniquesLevelRestriction
448
450
  ApplicableCombatTechniquesNegativeCombatTechniquesRestriction: ApplicableCombatTechniquesNegativeCombatTechniquesRestriction<unknown>
449
451
  ApplicableCombatTechniquesRaceRestriction: ApplicableCombatTechniquesRaceRestriction
450
- ApplicableCombatTechniquesWeaponRestriction: ApplicableCombatTechniquesWeaponRestriction
451
452
  Applications: Applications
452
453
  ArcaneBardTraditionReference: ArcaneBardTraditionReference
453
454
  ArcaneDancerTraditionReference: ArcaneDancerTraditionReference
455
+ ArcaneEnergyCostByLevel: ArcaneEnergyCostByLevel
456
+ ArcaneEnergyCostByLevelLevel: ArcaneEnergyCostByLevelLevel
454
457
  ArcaneEnergyCostDisjunction: ArcaneEnergyCostDisjunction
455
- ArcaneEnergyCostDisjunctionInterval: ArcaneEnergyCostDisjunctionInterval
456
458
  ArcaneEnergyCostDisjunctionOption: ArcaneEnergyCostDisjunctionOption
457
459
  ArcaneEnergyCostPerCountable: ArcaneEnergyCostPerCountable
458
460
  ArcaneTraditionPrerequisites: ArcaneTraditionPrerequisites
@@ -1187,6 +1189,7 @@ export interface Locale {
1187
1189
  "Adventure Points": string
1188
1190
  "AP": string
1189
1191
  ".input {$value :number} {{{$value} Adventure Points}}": string & { __params: { "value": number } }
1192
+ "{$value} Adventure Points": string & { __params: { "value": StringableTranslationParameter } }
1190
1193
  "{$value} AP": string & { __params: { "value": StringableTranslationParameter } }
1191
1194
  "{$value} Total AP": string & { __params: { "value": StringableTranslationParameter } }
1192
1195
  "{$value} AP Spent": string & { __params: { "value": StringableTranslationParameter } }
@@ -1988,8 +1991,7 @@ export interface Locale {
1988
1991
  "disadvantage": string
1989
1992
  "domain {$domain}": string & { __params: { "domain": StringableTranslationParameter } }
1990
1993
  "{$pact} level {$pactLevel}": string & { __params: { "pact": StringableTranslationParameter; "pactLevel": StringableTranslationParameter } }
1991
- "Level {$level}:": string & { __params: { "level": StringableTranslationParameter } }
1992
- ".input {$level :number} {{Level {$level}}}": string & { __params: { "level": number } }
1994
+ "Level {$level}": string & { __params: { "level": StringableTranslationParameter } }
1993
1995
  "cannot be chosen at the same time as {$trait}": string & { __params: { "trait": StringableTranslationParameter } }
1994
1996
  "must have {$trait}": string & { __params: { "trait": StringableTranslationParameter } }
1995
1997
  "inlinewiki.castingtime": string
@@ -2183,6 +2185,82 @@ export interface Locale {
2183
2185
  "Race Base {$abbreviation}": string & { __params: { "abbreviation": StringableTranslationParameter } }
2184
2186
  "Primary attribute for the magic user’s Tradition": string
2185
2187
  "Primary attribute for the Blessed One’s Tradition": string
2188
+ "The following rule is a Level {$level} focus rule for the topic {$topic}.": string & { __params: { "level": StringableTranslationParameter; "topic": StringableTranslationParameter } }
2189
+ "Protective Circle": string
2190
+ "Warding Circle": string
2191
+ "Prerequisites": string
2192
+ "AP Value": string
2193
+ ".input {$value :number} {{{$value} Adventure Points per level}}": string & { __params: { "value": number } }
2194
+ "tiny": string
2195
+ "small": string
2196
+ "medium": string
2197
+ "large": string
2198
+ "huge": string
2199
+ "{$values} AP for size category {$labels} (per level)": string & { __params: { "values": StringableTranslationParameter; "labels": StringableTranslationParameter } }
2200
+ "A/B/C/D skill": string
2201
+ "A/B/C/D spell": string
2202
+ "A/B/C/D ritual": string
2203
+ "A/B/C/D liturgical chant": string
2204
+ "A/B/C/D ceremony": string
2205
+ "A/B/C/D spellwork": string
2206
+ "A/B/C/D liturgical chant or ceremony": string
2207
+ "A/B/C/D ability": string
2208
+ "B/C/D combat technique": string
2209
+ "depending on the trade secret": string
2210
+ "{$values} Adventure Points for the {$labels} purchase": string & { __params: { "values": StringableTranslationParameter; "labels": StringableTranslationParameter } }
2211
+ "{$values}/and so on Adventure Points for the {$labels}/and so on purchase": string & { __params: { "values": StringableTranslationParameter; "labels": StringableTranslationParameter } }
2212
+ ".input {$value :number} {{{$value} Adventure Points with {$name}}}": string & { __params: { "value": number; "name": StringableTranslationParameter } }
2213
+ "Half the chosen disease’s level in adventure points": string
2214
+ "The chosen disease’s level in adventure points": string
2215
+ "Half the chosen poison’s level in adventure points": string
2216
+ "The chosen poison’s level in adventure points": string
2217
+ "{$values} adventure points for a {$sized} animal shape": string & { __params: { "values": StringableTranslationParameter; "sized": StringableTranslationParameter } }
2218
+ "Aspect": string
2219
+ "As chosen": string
2220
+ "Passive": string
2221
+ "Basic Maneuver": string
2222
+ "Special Maneuver": string
2223
+ "Volume": string
2224
+ "Penalty": string
2225
+ "Binding Cost": string
2226
+ "All": string
2227
+ "All Close Combat Techniques": string
2228
+ "All Ranged Combat Techniques": string
2229
+ "Depends on combat style; both combat styles can be used only for their corresponding combat techniques": string
2230
+ "only improvised weapons": string
2231
+ "weapon must have a pointed blade": string
2232
+ "while mounted": string
2233
+ "while weapon of race {$race}": string & { __params: { "race": StringableTranslationParameter } }
2234
+ "except {$list}": string & { __params: { "list": StringableTranslationParameter } }
2235
+ "All Two-Handed Weapons": string
2236
+ "All Parrying Weapons": string
2237
+ "with parry": string
2238
+ "that may be performed with one-handed weapons": string
2239
+ "only those with at least one blunt side": string
2240
+ "only {$nameWithLevel}": string & { __params: { "nameWithLevel": StringableTranslationParameter } }
2241
+ "only {$weapons}": string & { __params: { "weapons": StringableTranslationParameter } }
2242
+ ".input {$ord :number} {{{$ord}. attack}}": string & { __params: { "ord": number } }
2243
+ ".input {$ord :number} {{{$ord}. throw}}": string & { __params: { "ord": number } }
2244
+ "depending on the level of the special ability {$name}": string & { __params: { "name": StringableTranslationParameter } }
2245
+ "for parry": string
2246
+ "one-handed weapon": string
2247
+ "two-handed weapon": string
2248
+ "for secondary fighters with/without special ability {$name}": string & { __params: { "name": StringableTranslationParameter } }
2249
+ "{$start} to {$end}": string & { __params: { "start": StringableTranslationParameter; "end": StringableTranslationParameter } }
2250
+ "Depends on zone": string
2251
+ ".input {$points :number} {{{$points} points}}": string & { __params: { "points": number } }
2252
+ ".input {$points :number} {{{$points} points per level}}": string & { __params: { "points": number } }
2253
+ "{$points} points": string & { __params: { "points": StringableTranslationParameter } }
2254
+ "{$points} points for levels {$levels}": string & { __params: { "points": StringableTranslationParameter; "levels": StringableTranslationParameter } }
2255
+ "{$value} LP": string & { __params: { "value": StringableTranslationParameter } }
2256
+ ".input {$value :number} {{{$value} permanent AE}}": string & { __params: { "value": number } }
2257
+ "{$cost} per {$interval}": string & { __params: { "cost": StringableTranslationParameter; "interval": StringableTranslationParameter } }
2258
+ "{$cost} per {$countable}": string & { __params: { "cost": StringableTranslationParameter; "countable": StringableTranslationParameter } }
2259
+ "{$cost} per level": string & { __params: { "cost": StringableTranslationParameter } }
2260
+ "{$cost} for level {$level}": string & { __params: { "cost": StringableTranslationParameter; "level": StringableTranslationParameter } }
2261
+ "{$cost} (activation) + {$halvedCost} per {$interval}": string & { __params: { "cost": StringableTranslationParameter; "halvedCost": StringableTranslationParameter; "interval": StringableTranslationParameter } }
2262
+ "Variable": string
2263
+ "{$value} permanent AE": string & { __params: { "value": StringableTranslationParameter } }
2186
2264
  }
2187
2265
  }
2188
2266
 
@@ -6607,7 +6685,7 @@ export interface FocusRule {
6607
6685
  /**
6608
6686
  * The associated subject.
6609
6687
  */
6610
- subject?: Subject_ID
6688
+ subject: Subject_ID
6611
6689
 
6612
6690
  /**
6613
6691
  * The focus rule’s level.
@@ -9829,6 +9907,10 @@ export type ArcaneEnergyCost =
9829
9907
  | {
9830
9908
  kind: "Variable"
9831
9909
  }
9910
+ | {
9911
+ kind: "ByLevel"
9912
+ ByLevel: ArcaneEnergyCostByLevel
9913
+ }
9832
9914
 
9833
9915
  export interface FixedArcaneEnergyCost {
9834
9916
  /**
@@ -9971,36 +10053,12 @@ export type IndefiniteArcaneEnergyCostModifierArithmetic =
9971
10053
  }
9972
10054
 
9973
10055
  export interface ArcaneEnergyCostDisjunction {
9974
- /**
9975
- * Specified if the selected AE cost option has to be paid for each time interval.
9976
- */
9977
- interval?: ArcaneEnergyCostDisjunctionInterval
9978
-
9979
10056
  /**
9980
10057
  * The possible AE cost values.
9981
10058
  */
9982
10059
  options: ArcaneEnergyCostDisjunctionOption[]
9983
10060
  }
9984
10061
 
9985
- export interface ArcaneEnergyCostDisjunctionInterval {
9986
- /**
9987
- * The interval itself.
9988
- */
9989
- value: DurationUnitValue
9990
-
9991
- /**
9992
- * The AE cost value for activation.
9993
- */
9994
- activation_value: number
9995
-
9996
- /**
9997
- * Set to `true` if the action where the enchantment is casted does not as a part of the first interval that has to be payed, so that the first interval payment needs to be done after the activation.
9998
- *
9999
- * This works different than other sustained spells, since for them the end of the cast usually already counts as part of the first interval.
10000
- */
10001
- after_activation: boolean
10002
- }
10003
-
10004
10062
  export interface ArcaneEnergyCostDisjunctionOption {
10005
10063
  /**
10006
10064
  * A possible AE cost value.
@@ -10022,6 +10080,36 @@ export interface ArcaneEnergyCostDisjunctionOptionTranslation {
10022
10080
  note?: ResponsiveTextOptional
10023
10081
  }
10024
10082
 
10083
+ export interface ArcaneEnergyCostByLevel {
10084
+ /**
10085
+ * A continuous range of arcane energy cost for each level. The first element is the AE cost for the first level, the second element is the AE cost for the second level, and so on.
10086
+ */
10087
+ levels: ArcaneEnergyCostByLevelLevel[]
10088
+
10089
+ /**
10090
+ * How to display the AE cost by level.
10091
+ */
10092
+ style: ArcaneEnergyCostByLevelStyle
10093
+ }
10094
+
10095
+ export interface ArcaneEnergyCostByLevelLevel {
10096
+ /**
10097
+ * The arcane energy cost for this level.
10098
+ */
10099
+ value: number
10100
+ }
10101
+
10102
+ /**
10103
+ * The AE cost are defined by level of the enchantment. It may either be displayed in a compressed way (e.g. `1/2 AE for level I/II`) or in a verbose way (e.g. `1 AE for level I; 2 AE for level II`).
10104
+ */
10105
+ export type ArcaneEnergyCostByLevelStyle =
10106
+ | {
10107
+ kind: "Compressed"
10108
+ }
10109
+ | {
10110
+ kind: "Verbose"
10111
+ }
10112
+
10025
10113
  /**
10026
10114
  * The binding cost for an enchantment.
10027
10115
  */
@@ -10633,7 +10721,7 @@ export type ApplicableCombatTechniques =
10633
10721
  }
10634
10722
 
10635
10723
  export interface AllApplicableCombatTechniques {
10636
- restrictions?: ApplicableAllCombatTechniquesRestriction[]
10724
+ restriction?: ApplicableAllCombatTechniquesRestriction
10637
10725
  }
10638
10726
 
10639
10727
  export type ApplicableAllCombatTechniquesRestriction =
@@ -10665,7 +10753,7 @@ export interface ApplicableCombatTechniquesNegativeCombatTechniquesRestriction<R
10665
10753
  }
10666
10754
 
10667
10755
  export interface AllApplicableCloseCombatTechniques {
10668
- restrictions?: ApplicableCloseCombatTechniquesRestriction[]
10756
+ restriction?: ApplicableCloseCombatTechniquesRestriction
10669
10757
  }
10670
10758
 
10671
10759
  export type ApplicableCloseCombatTechniquesRestriction =
@@ -10700,7 +10788,7 @@ export type ApplicableCloseCombatTechniquesRestriction =
10700
10788
  }
10701
10789
 
10702
10790
  export interface AllApplicableRangedCombatTechniques {
10703
- restrictions?: ApplicableRangedCombatTechniquesRestriction[]
10791
+ restriction?: ApplicableRangedCombatTechniquesRestriction
10704
10792
  }
10705
10793
 
10706
10794
  export type ApplicableRangedCombatTechniquesRestriction =
@@ -10728,7 +10816,13 @@ export interface SpecificApplicableCombatTechniques {
10728
10816
 
10729
10817
  export interface SpecificApplicableCombatTechnique {
10730
10818
  id: CombatTechniqueIdentifier
10731
- restrictions?: ApplicableSpecificCombatTechniquesRestriction[]
10819
+
10820
+ restriction?: ApplicableSpecificCombatTechniquesRestriction
10821
+
10822
+ /**
10823
+ * The specific weapons this combat special ability is only applicable to.
10824
+ */
10825
+ weapons?: Weapon_ID[]
10732
10826
  }
10733
10827
 
10734
10828
  export type ApplicableSpecificCombatTechniquesRestriction =
@@ -10749,10 +10843,6 @@ export type ApplicableSpecificCombatTechniquesRestriction =
10749
10843
  kind: "Level"
10750
10844
  Level: ApplicableCombatTechniquesLevelRestriction
10751
10845
  }
10752
- | {
10753
- kind: "Weapons"
10754
- Weapons: ApplicableCombatTechniquesWeaponRestriction
10755
- }
10756
10846
  | {
10757
10847
  kind: "OneBluntSide"
10758
10848
  }
@@ -10764,13 +10854,6 @@ export interface ApplicableCombatTechniquesLevelRestriction {
10764
10854
  level: number
10765
10855
  }
10766
10856
 
10767
- export interface ApplicableCombatTechniquesWeaponRestriction {
10768
- /**
10769
- * The specific weapons this combat special ability is only applicable to.
10770
- */
10771
- list: Weapon_ID[]
10772
- }
10773
-
10774
10857
  export interface Weapon {
10775
10858
  /**
10776
10859
  * The cost in silverthalers.
@@ -14993,7 +15076,7 @@ export interface SkillStyleSpecialAbility {
14993
15076
  /**
14994
15077
  * The Advanced Special Abilities for the respective Style Special Ability. Sometimes, only a specific select option or a set of select options of an entry is allowed, which can be modelled by the option property. It can also be that you can choose from a set of special abilities, but then you can’t specify an option.
14995
15078
  */
14996
- advanced: [AdvancedSpecialAbility<AdvancedSkillSpecialAbility_ID>, AdvancedSpecialAbility<AdvancedSkillSpecialAbility_ID>, AdvancedSpecialAbility<AdvancedSkillSpecialAbility_ID>]
15079
+ advanced: [AdvancedSpecialAbility<AdvancedSkillStyleSpecialAbilityIdentifier>, AdvancedSpecialAbility<AdvancedSkillStyleSpecialAbilityIdentifier>, AdvancedSpecialAbility<AdvancedSkillStyleSpecialAbilityIdentifier>]
14997
15080
 
14998
15081
  prerequisites?: GeneralPrerequisites
14999
15082
 
@@ -15051,6 +15134,16 @@ export interface SkillStyleSpecialAbilityTranslation {
15051
15134
  errata?: Errata
15052
15135
  }
15053
15136
 
15137
+ export type AdvancedSkillStyleSpecialAbilityIdentifier =
15138
+ | {
15139
+ kind: "AdvancedCombatSpecialAbility"
15140
+ AdvancedCombatSpecialAbility: AdvancedCombatSpecialAbility_ID
15141
+ }
15142
+ | {
15143
+ kind: "AdvancedSkillSpecialAbility"
15144
+ AdvancedSkillSpecialAbility: AdvancedSkillSpecialAbility_ID
15145
+ }
15146
+
15054
15147
  export interface SpellSwordEnchantment {
15055
15148
  /**
15056
15149
  * Number of available levels.
@@ -20076,6 +20169,11 @@ export interface DerivedCharacteristicTranslation {
20076
20169
  */
20077
20170
  abbreviation: string
20078
20171
 
20172
+ /**
20173
+ * The derived characteristic’s description.
20174
+ */
20175
+ description?: string
20176
+
20079
20177
  /**
20080
20178
  * Possible calculation strings for the final value.
20081
20179
  */
@@ -230,6 +230,7 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
230
230
  translations: DB.MemberDecl<DB.NestedEntityMap<"DerivedCharacteristicTranslation", {
231
231
  name: DB.MemberDecl<DB.String, true>;
232
232
  abbreviation: DB.MemberDecl<DB.String, true>;
233
+ description: DB.MemberDecl<DB.String, false>;
233
234
  calculation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CalculationTranslation", DB.Object<{
234
235
  default: DB.MemberDecl<DB.String, true>;
235
236
  half_primary: DB.MemberDecl<DB.String, false>;
@@ -31,6 +31,10 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
31
31
  comment: "The derived characteristic’s abbreviation.",
32
32
  type: DB.String({ minLength: 1 }),
33
33
  }),
34
+ description: DB.Optional({
35
+ comment: "The derived characteristic’s description.",
36
+ type: DB.String({ minLength: 1, isMarkdown: true }),
37
+ }),
34
38
  calculation: DB.Optional({
35
39
  comment: "Possible calculation strings for the final value.",
36
40
  type: DB.IncludeIdentifier(CalculationTranslation),
@@ -101,6 +101,7 @@ export declare const Locale: DB.Entity<"Locale", {
101
101
  * - `0`: AP value
102
102
  */
103
103
  ".input {$value :number} {{{$value} Adventure Points}}": null;
104
+ "{$value} Adventure Points": null;
104
105
  /**
105
106
  * - `0`: AP value
106
107
  */
@@ -1058,8 +1059,7 @@ export declare const Locale: DB.Entity<"Locale", {
1058
1059
  disadvantage: null;
1059
1060
  "domain {$domain}": null;
1060
1061
  "{$pact} level {$pactLevel}": null;
1061
- "Level {$level}:": null;
1062
- ".input {$level :number} {{Level {$level}}}": null;
1062
+ "Level {$level}": null;
1063
1063
  "cannot be chosen at the same time as {$trait}": null;
1064
1064
  "must have {$trait}": null;
1065
1065
  "inlinewiki.castingtime": null;
@@ -1268,6 +1268,82 @@ export declare const Locale: DB.Entity<"Locale", {
1268
1268
  "Race Base {$abbreviation}": null;
1269
1269
  "Primary attribute for the magic user\u2019s Tradition": null;
1270
1270
  "Primary attribute for the Blessed One\u2019s Tradition": null;
1271
+ "The following rule is a Level {$level} focus rule for the topic {$topic}.": null;
1272
+ "Protective Circle": null;
1273
+ "Warding Circle": null;
1274
+ Prerequisites: null;
1275
+ "AP Value": null;
1276
+ ".input {$value :number} {{{$value} Adventure Points per level}}": null;
1277
+ tiny: null;
1278
+ small: null;
1279
+ medium: null;
1280
+ large: null;
1281
+ huge: null;
1282
+ "{$values} AP for size category {$labels} (per level)": null;
1283
+ "A/B/C/D skill": null;
1284
+ "A/B/C/D spell": null;
1285
+ "A/B/C/D ritual": null;
1286
+ "A/B/C/D liturgical chant": null;
1287
+ "A/B/C/D ceremony": null;
1288
+ "A/B/C/D spellwork": null;
1289
+ "A/B/C/D liturgical chant or ceremony": null;
1290
+ "A/B/C/D ability": null;
1291
+ "B/C/D combat technique": null;
1292
+ "depending on the trade secret": null;
1293
+ "{$values} Adventure Points for the {$labels} purchase": null;
1294
+ "{$values}/and so on Adventure Points for the {$labels}/and so on purchase": null;
1295
+ ".input {$value :number} {{{$value} Adventure Points with {$name}}}": null;
1296
+ "Half the chosen disease\u2019s level in adventure points": null;
1297
+ "The chosen disease\u2019s level in adventure points": null;
1298
+ "Half the chosen poison\u2019s level in adventure points": null;
1299
+ "The chosen poison\u2019s level in adventure points": null;
1300
+ "{$values} adventure points for a {$sized} animal shape": null;
1301
+ Aspect: null;
1302
+ "As chosen": null;
1303
+ Passive: null;
1304
+ "Basic Maneuver": null;
1305
+ "Special Maneuver": null;
1306
+ Volume: null;
1307
+ Penalty: null;
1308
+ "Binding Cost": null;
1309
+ All: null;
1310
+ "All Close Combat Techniques": null;
1311
+ "All Ranged Combat Techniques": null;
1312
+ "Depends on combat style; both combat styles can be used only for their corresponding combat techniques": null;
1313
+ "only improvised weapons": null;
1314
+ "weapon must have a pointed blade": null;
1315
+ "while mounted": null;
1316
+ "while weapon of race {$race}": null;
1317
+ "except {$list}": null;
1318
+ "All Two-Handed Weapons": null;
1319
+ "All Parrying Weapons": null;
1320
+ "with parry": null;
1321
+ "that may be performed with one-handed weapons": null;
1322
+ "only those with at least one blunt side": null;
1323
+ "only {$nameWithLevel}": null;
1324
+ "only {$weapons}": null;
1325
+ ".input {$ord :number} {{{$ord}. attack}}": null;
1326
+ ".input {$ord :number} {{{$ord}. throw}}": null;
1327
+ "depending on the level of the special ability {$name}": null;
1328
+ "for parry": null;
1329
+ "one-handed weapon": null;
1330
+ "two-handed weapon": null;
1331
+ "for secondary fighters with/without special ability {$name}": null;
1332
+ "{$start} to {$end}": null;
1333
+ "Depends on zone": null;
1334
+ ".input {$points :number} {{{$points} points}}": null;
1335
+ ".input {$points :number} {{{$points} points per level}}": null;
1336
+ "{$points} points": null;
1337
+ "{$points} points for levels {$levels}": null;
1338
+ "{$value} LP": null;
1339
+ ".input {$value :number} {{{$value} permanent AE}}": null;
1340
+ "{$cost} per {$interval}": null;
1341
+ "{$cost} per {$countable}": null;
1342
+ "{$cost} per level": null;
1343
+ "{$cost} for level {$level}": null;
1344
+ "{$cost} (activation) + {$halvedCost} per {$interval}": null;
1345
+ Variable: null;
1346
+ "{$value} permanent AE": null;
1271
1347
  }>, false>;
1272
1348
  }, undefined>;
1273
1349
  export declare const NestedTranslationMap: <Name extends string, T extends Record<string, DB.MemberDecl>, R extends boolean>(MemberDeclCreator: <T_1 extends DB.Type>(options: {
@@ -123,6 +123,7 @@ export const Locale = DB.Entity(import.meta.url, {
123
123
  * - `0`: AP value
124
124
  */
125
125
  ".input {$value :number} {{{$value} Adventure Points}}": null,
126
+ "{$value} Adventure Points": null,
126
127
  /**
127
128
  * - `0`: AP value
128
129
  */
@@ -1085,9 +1086,8 @@ export const Locale = DB.Entity(import.meta.url, {
1085
1086
  "disadvantage": null,
1086
1087
  "domain {$domain}": null,
1087
1088
  "{$pact} level {$pactLevel}": null,
1088
- "Level {$level}:": null,
1089
1089
  // Personality Trait prerequisite
1090
- ".input {$level :number} {{Level {$level}}}": null,
1090
+ "Level {$level}": null,
1091
1091
  "cannot be chosen at the same time as {$trait}": null,
1092
1092
  "must have {$trait}": null,
1093
1093
  "inlinewiki.castingtime": null,
@@ -1301,6 +1301,88 @@ export const Locale = DB.Entity(import.meta.url, {
1301
1301
  "Race Base {$abbreviation}": null,
1302
1302
  "Primary attribute for the magic user’s Tradition": null,
1303
1303
  "Primary attribute for the Blessed One’s Tradition": null,
1304
+ // Focus Rules
1305
+ "The following rule is a Level {$level} focus rule for the topic {$topic}.": null,
1306
+ // Special Abilities
1307
+ "Protective Circle": null,
1308
+ "Warding Circle": null,
1309
+ "Prerequisites": null,
1310
+ "AP Value": null,
1311
+ ".input {$value :number} {{{$value} Adventure Points per level}}": null,
1312
+ "tiny": null,
1313
+ "small": null,
1314
+ "medium": null,
1315
+ "large": null,
1316
+ "huge": null,
1317
+ "{$values} AP for size category {$labels} (per level)": null,
1318
+ "A/B/C/D skill": null,
1319
+ "A/B/C/D spell": null,
1320
+ "A/B/C/D ritual": null,
1321
+ "A/B/C/D liturgical chant": null,
1322
+ "A/B/C/D ceremony": null,
1323
+ "A/B/C/D spellwork": null,
1324
+ "A/B/C/D liturgical chant or ceremony": null,
1325
+ "A/B/C/D ability": null,
1326
+ "B/C/D combat technique": null,
1327
+ "depending on the trade secret": null,
1328
+ "{$values} Adventure Points for the {$labels} purchase": null,
1329
+ "{$values}/and so on Adventure Points for the {$labels}/and so on purchase": null,
1330
+ ".input {$value :number} {{{$value} Adventure Points with {$name}}}": null,
1331
+ "Half the chosen disease’s level in adventure points": null,
1332
+ "The chosen disease’s level in adventure points": null,
1333
+ "Half the chosen poison’s level in adventure points": null,
1334
+ "The chosen poison’s level in adventure points": null,
1335
+ "{$values} adventure points for a {$sized} animal shape": null,
1336
+ "Aspect": null,
1337
+ "As chosen": null,
1338
+ "Passive": null,
1339
+ "Basic Maneuver": null,
1340
+ "Special Maneuver": null,
1341
+ "Volume": null,
1342
+ "Penalty": null,
1343
+ "Binding Cost": null,
1344
+ // combat special ability -- applicable combat techniques
1345
+ "All": null,
1346
+ "All Close Combat Techniques": null,
1347
+ "All Ranged Combat Techniques": null,
1348
+ "Depends on combat style; both combat styles can be used only for their corresponding combat techniques": null,
1349
+ "only improvised weapons": null,
1350
+ "weapon must have a pointed blade": null,
1351
+ "while mounted": null,
1352
+ "while weapon of race {$race}": null,
1353
+ "except {$list}": null,
1354
+ "All Two-Handed Weapons": null,
1355
+ "All Parrying Weapons": null,
1356
+ "with parry": null,
1357
+ "that may be performed with one-handed weapons": null,
1358
+ "only those with at least one blunt side": null,
1359
+ "only {$nameWithLevel}": null,
1360
+ "only {$weapons}": null,
1361
+ // combat special ability -- penalty
1362
+ ".input {$ord :number} {{{$ord}. attack}}": null,
1363
+ ".input {$ord :number} {{{$ord}. throw}}": null,
1364
+ "depending on the level of the special ability {$name}": null,
1365
+ "for parry": null,
1366
+ "one-handed weapon": null,
1367
+ "two-handed weapon": null,
1368
+ "for secondary fighters with/without special ability {$name}": null,
1369
+ "{$start} to {$end}": null,
1370
+ "Depends on zone": null,
1371
+ // tradition artifact enchantments -- volume
1372
+ ".input {$points :number} {{{$points} points}}": null,
1373
+ ".input {$points :number} {{{$points} points per level}}": null,
1374
+ "{$points} points": null,
1375
+ "{$points} points for levels {$levels}": null,
1376
+ // tradition articact enchantments -- cost
1377
+ "{$value} LP": null,
1378
+ ".input {$value :number} {{{$value} permanent AE}}": null,
1379
+ "{$cost} per {$interval}": null,
1380
+ "{$cost} per {$countable}": null,
1381
+ "{$cost} per level": null,
1382
+ "{$cost} for level {$level}": null,
1383
+ "{$cost} (activation) + {$halvedCost} per {$interval}": null,
1384
+ "Variable": null,
1385
+ "{$value} permanent AE": null,
1304
1386
  }, { allKeysAreRequired: true }),
1305
1387
  }),
1306
1388
  }),
@@ -65,7 +65,7 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
65
65
  None: DB.EnumCase<null>;
66
66
  DependingOnCombatStyle: DB.EnumCase<null>;
67
67
  All: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AllApplicableCombatTechniques", DB.Object<{
68
- restrictions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ApplicableAllCombatTechniquesRestriction", {
68
+ restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableAllCombatTechniquesRestriction", {
69
69
  Improvised: DB.EnumCase<null>;
70
70
  PointedBlade: DB.EnumCase<null>;
71
71
  Mount: DB.EnumCase<null>;
@@ -73,10 +73,10 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
73
73
  ExcludeCombatTechniques: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
74
74
  list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Ref", DB.Type>>>, true>;
75
75
  }>, [Ref: DB.Param<"Ref", DB.Type>]>>>;
76
- }, []>>>, false>;
76
+ }, []>>, false>;
77
77
  }>, []>>>;
78
78
  AllClose: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AllApplicableCloseCombatTechniques", DB.Object<{
79
- restrictions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ApplicableCloseCombatTechniquesRestriction", {
79
+ restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableCloseCombatTechniquesRestriction", {
80
80
  Improvised: DB.EnumCase<null>;
81
81
  PointedBlade: DB.EnumCase<null>;
82
82
  Mount: DB.EnumCase<null>;
@@ -88,10 +88,10 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
88
88
  ExcludeCombatTechniques: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
89
89
  list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Ref", DB.Type>>>, true>;
90
90
  }>, [Ref: DB.Param<"Ref", DB.Type>]>>>;
91
- }, []>>>, false>;
91
+ }, []>>, false>;
92
92
  }>, []>>>;
93
93
  AllRanged: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AllApplicableRangedCombatTechniques", DB.Object<{
94
- restrictions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ApplicableRangedCombatTechniquesRestriction", {
94
+ restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableRangedCombatTechniquesRestriction", {
95
95
  Improvised: DB.EnumCase<null>;
96
96
  PointedBlade: DB.EnumCase<null>;
97
97
  Mount: DB.EnumCase<null>;
@@ -99,7 +99,7 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
99
99
  ExcludeCombatTechniques: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
100
100
  list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Ref", DB.Type>>>, true>;
101
101
  }>, [Ref: DB.Param<"Ref", DB.Type>]>>>;
102
- }, []>>>, false>;
102
+ }, []>>, false>;
103
103
  }>, []>>>;
104
104
  Specific: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecificApplicableCombatTechniques", DB.Object<{
105
105
  list: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecificApplicableCombatTechnique", DB.Object<{
@@ -107,7 +107,7 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
107
107
  CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
108
108
  RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
109
109
  }, []>>, true>;
110
- restrictions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ApplicableSpecificCombatTechniquesRestriction", {
110
+ restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableSpecificCombatTechniquesRestriction", {
111
111
  Improvised: DB.EnumCase<null>;
112
112
  PointedBlade: DB.EnumCase<null>;
113
113
  Mount: DB.EnumCase<null>;
@@ -115,11 +115,9 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
115
115
  Level: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesLevelRestriction", DB.Object<{
116
116
  level: DB.MemberDecl<DB.Integer, true>;
117
117
  }>, []>>>;
118
- Weapons: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesWeaponRestriction", DB.Object<{
119
- list: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
120
- }>, []>>>;
121
118
  OneBluntSide: DB.EnumCase<null>;
122
- }, []>>>, false>;
119
+ }, []>>, false>;
120
+ weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
123
121
  }>, []>>>, true>;
124
122
  }>, []>>>;
125
123
  }, []>>, true>;