optolith-database-schema 0.25.0 → 0.26.1
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 +30 -0
- package/gen/types.d.ts +390 -300
- package/lib/main.d.ts +7 -0
- package/lib/types/Advantage.d.ts +11 -0
- package/lib/types/CombatTechnique.d.ts +79 -55
- package/lib/types/CombatTechnique.js +25 -7
- package/lib/types/Disadvantage.d.ts +11 -0
- package/lib/types/HomunculusType.d.ts +6 -0
- package/lib/types/HomunculusType.js +15 -0
- package/lib/types/Profession.d.ts +25 -0
- package/lib/types/Profession.js +18 -2
- package/lib/types/_ActivatableAdventurePointsValue.d.ts +1 -0
- package/lib/types/_ActivatableAdventurePointsValue.js +4 -0
- package/lib/types/_ActivatableNonMundane.d.ts +10 -2
- package/lib/types/_ActivatableNonMundane.js +11 -1
- package/lib/types/_ActivatableSelectOptionCategory.d.ts +699 -0
- package/lib/types/_ActivatableSelectOptionCategory.js +73 -0
- package/lib/types/_ActivatableSelectOptions.d.ts +10 -0
- package/lib/types/equipment/item/BandageOrRemedy.js +10 -0
- package/lib/types/equipment/item/CeremonialItem.js +10 -0
- package/lib/types/equipment/item/Clothes.js +10 -0
- package/lib/types/equipment/item/Container.js +10 -0
- package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +10 -0
- package/lib/types/equipment/item/IlluminationLightSource.js +10 -0
- package/lib/types/equipment/item/IlluminationRefillOrSupply.js +10 -0
- package/lib/types/equipment/item/Liebesspielzeug.js +10 -0
- package/lib/types/equipment/item/LuxuryGood.js +10 -0
- package/lib/types/equipment/item/MagicalArtifact.js +10 -0
- package/lib/types/equipment/item/MusicalInstrument.js +10 -0
- package/lib/types/equipment/item/TravelGearOrTool.js +10 -0
- package/lib/types/equipment/item/Weapon.d.ts +45 -45
- package/lib/types/equipment/item/Weapon.js +7 -5
- package/lib/types/equipment/item/WeaponAccessory.js +10 -0
- package/lib/types/equipment/item/_Item.js +13 -1
- package/lib/types/equipment/item/_Weapon.d.ts +13 -4
- package/lib/types/equipment/item/_Weapon.js +32 -4
- package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/AncestorGlyph.d.ts +11 -0
- package/lib/types/specialAbility/BlessedTradition.d.ts +11 -0
- package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/CombatSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/CommandSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/LycantropicGift.d.ts +11 -0
- package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/MagicalTradition.d.ts +11 -0
- package/lib/types/specialAbility/PactGift.d.ts +11 -0
- package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/Sermon.d.ts +11 -0
- package/lib/types/specialAbility/SexSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +11 -0
- package/lib/types/specialAbility/VampiricGift.d.ts +11 -0
- package/lib/types/specialAbility/Vision.d.ts +11 -0
- package/lib/types/specialAbility/sub/TradeSecret.d.ts +880 -161
- package/lib/types/specialAbility/sub/TradeSecret.js +9 -5
- package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/Beutelzauber.d.ts +16 -1
- package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/DaggerRitual.d.ts +16 -1
- package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/Haubenzauber.d.ts +16 -1
- package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +16 -1
- package/lib/types/traditionArtifacts/Kristallkugelzauber.d.ts +16 -1
- package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/RingEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/SickleRitual.d.ts +16 -1
- package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +16 -1
- package/lib/types/traditionArtifacts/WandEnchantment.d.ts +16 -1
- package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +16 -1
- package/package.json +2 -2
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Entity, IncludeIdentifier, NestedEntityMap,
|
|
1
|
+
import { Entity, IncludeIdentifier, NestedEntityMap, ObjectType, String, TypeAlias } from "tsondb/schema/def";
|
|
2
2
|
export declare const Weapon: Entity<"Weapon", {
|
|
3
3
|
cost: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Cost", {
|
|
4
4
|
Free: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
5
5
|
Various: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
6
6
|
Invaluable: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
7
|
-
Fixed: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"FixedCost",
|
|
7
|
+
Fixed: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"FixedCost", ObjectType<{
|
|
8
8
|
value: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").FloatType, true>;
|
|
9
9
|
translations: import("tsondb/schema/def").MemberDecl<NestedEntityMap<"FixedCostTranslation", {
|
|
10
10
|
wrap_in_text: import("tsondb/schema/def").MemberDecl<String, true>;
|
|
11
11
|
}>, false>;
|
|
12
12
|
}>, []>>>;
|
|
13
|
-
Range: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"CostRange",
|
|
13
|
+
Range: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"CostRange", ObjectType<{
|
|
14
14
|
from: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").FloatType, true>;
|
|
15
15
|
to: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").FloatType, true>;
|
|
16
16
|
translations: import("tsondb/schema/def").MemberDecl<NestedEntityMap<"CostRangeTranslation", {
|
|
@@ -22,27 +22,27 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
22
22
|
complexity: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Complexity", {
|
|
23
23
|
Primitive: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
24
24
|
Simple: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
25
|
-
Complex: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"ComplexComplexity",
|
|
25
|
+
Complex: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"ComplexComplexity", ObjectType<{
|
|
26
26
|
ap_value: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
27
27
|
}>, []>>>;
|
|
28
28
|
}, []>>, false>;
|
|
29
|
-
structure_points: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"StructurePoints", import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"StructurePointsComponent",
|
|
29
|
+
structure_points: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"StructurePoints", import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"StructurePointsComponent", ObjectType<{
|
|
30
30
|
points: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
31
31
|
}>, []>>>, []>>, false>;
|
|
32
32
|
melee_uses: import("tsondb/schema/def").MemberDecl<NestedEntityMap<string, {
|
|
33
|
-
damage: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"MeleeDamage",
|
|
34
|
-
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice",
|
|
33
|
+
damage: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"MeleeDamage", ObjectType<{
|
|
34
|
+
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice", ObjectType<{
|
|
35
35
|
number: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
36
36
|
sides: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"DieType", import("tsondb/schema/def").IntegerType, []>>, true>;
|
|
37
37
|
}>, []>>, true>;
|
|
38
38
|
flat: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
39
39
|
}>, []>>, true>;
|
|
40
40
|
damage_threshold: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"PrimaryAttributeDamageThreshold", {
|
|
41
|
-
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultPrimaryAttributeDamageThreshold",
|
|
41
|
+
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultPrimaryAttributeDamageThreshold", ObjectType<{
|
|
42
42
|
threshold: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
43
43
|
}>, []>>>;
|
|
44
|
-
List: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"PrimaryAttributeDamageThresholdList",
|
|
45
|
-
list: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"SinglePrimaryAttributeDamageThreshold",
|
|
44
|
+
List: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"PrimaryAttributeDamageThresholdList", ObjectType<{
|
|
45
|
+
list: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"SinglePrimaryAttributeDamageThreshold", ObjectType<{
|
|
46
46
|
attribute: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ReferenceIdentifierType, true>;
|
|
47
47
|
threshold: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
48
48
|
}>, []>>>, true>;
|
|
@@ -55,7 +55,7 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
55
55
|
size: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"ShieldSize", {
|
|
56
56
|
Small: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
57
57
|
Medium: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
58
|
-
Large: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"LargeShieldSize",
|
|
58
|
+
Large: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"LargeShieldSize", ObjectType<{
|
|
59
59
|
attack_penalty: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
60
60
|
}>, []>>>;
|
|
61
61
|
}, []>>, false>;
|
|
@@ -65,8 +65,8 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
65
65
|
}>, false>;
|
|
66
66
|
ranged_uses: import("tsondb/schema/def").MemberDecl<NestedEntityMap<string, {
|
|
67
67
|
damage: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"RangedDamage", {
|
|
68
|
-
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultRangedDamage",
|
|
69
|
-
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice",
|
|
68
|
+
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultRangedDamage", ObjectType<{
|
|
69
|
+
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice", ObjectType<{
|
|
70
70
|
number: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
71
71
|
sides: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"DieType", import("tsondb/schema/def").IntegerType, []>>, true>;
|
|
72
72
|
}>, []>>, true>;
|
|
@@ -75,10 +75,10 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
75
75
|
NotApplicable: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
76
76
|
Special: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
77
77
|
}, []>>, true>;
|
|
78
|
-
reload_time: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"ReloadTime",
|
|
78
|
+
reload_time: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"ReloadTime", ObjectType<{
|
|
79
79
|
value: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
80
80
|
}>, []>>>, true>;
|
|
81
|
-
range: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RangeBrackets",
|
|
81
|
+
range: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RangeBrackets", ObjectType<{
|
|
82
82
|
close: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
83
83
|
medium: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
84
84
|
far: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
@@ -87,20 +87,20 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
87
87
|
length: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Length", import("tsondb/schema/def").IntegerType, []>>, false>;
|
|
88
88
|
is_improvised_weapon: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").BooleanType, true>;
|
|
89
89
|
}>, false>;
|
|
90
|
-
restrictedTo: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedTo",
|
|
91
|
-
races: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToRaces",
|
|
90
|
+
restrictedTo: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedTo", ObjectType<{
|
|
91
|
+
races: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToRaces", ObjectType<{
|
|
92
92
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
93
93
|
}>, []>>, false>;
|
|
94
|
-
cultures: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToCultures",
|
|
94
|
+
cultures: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToCultures", ObjectType<{
|
|
95
95
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
96
96
|
}>, []>>, false>;
|
|
97
|
-
professions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToProfessions",
|
|
97
|
+
professions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToProfessions", ObjectType<{
|
|
98
98
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
99
99
|
}>, []>>, false>;
|
|
100
|
-
magicalTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToMagicalTraditions",
|
|
100
|
+
magicalTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToMagicalTraditions", ObjectType<{
|
|
101
101
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
102
102
|
}>, []>>, false>;
|
|
103
|
-
blessedTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToBlessedTraditions",
|
|
103
|
+
blessedTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToBlessedTraditions", ObjectType<{
|
|
104
104
|
scope: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"RestrictedToBlessedTraditionsScope", {
|
|
105
105
|
Specific: import("tsondb/schema/def").EnumCaseDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>>;
|
|
106
106
|
Church: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
@@ -109,12 +109,12 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
109
109
|
isSanctifiedBy: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").BooleanType, true>;
|
|
110
110
|
}>, []>>, false>;
|
|
111
111
|
}>, []>>, false>;
|
|
112
|
-
src: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"PublicationRefs", import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"PublicationRef",
|
|
112
|
+
src: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"PublicationRefs", import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"PublicationRef", ObjectType<{
|
|
113
113
|
id: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ReferenceIdentifierType, true>;
|
|
114
114
|
occurrences: import("tsondb/schema/def").MemberDecl<NestedEntityMap<string, {
|
|
115
|
-
initial: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"InitialOccurrence",
|
|
115
|
+
initial: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"InitialOccurrence", ObjectType<{
|
|
116
116
|
printing: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
117
|
-
pages: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"PageRange",
|
|
117
|
+
pages: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"PageRange", ObjectType<{
|
|
118
118
|
first_page: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Page", {
|
|
119
119
|
InsideCoverFront: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
120
120
|
InsideCoverBack: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
@@ -128,9 +128,9 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
128
128
|
}>, []>>>, true>;
|
|
129
129
|
}>, []>>, true>;
|
|
130
130
|
revisions: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Revision", {
|
|
131
|
-
Since: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"Since",
|
|
131
|
+
Since: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"Since", ObjectType<{
|
|
132
132
|
printing: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
133
|
-
pages: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"PageRange",
|
|
133
|
+
pages: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"PageRange", ObjectType<{
|
|
134
134
|
first_page: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Page", {
|
|
135
135
|
InsideCoverFront: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
136
136
|
InsideCoverBack: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
@@ -143,7 +143,7 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
143
143
|
}, []>>, false>;
|
|
144
144
|
}>, []>>>, true>;
|
|
145
145
|
}>, []>>>;
|
|
146
|
-
Deprecated: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"Deprecation",
|
|
146
|
+
Deprecated: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"Deprecation", ObjectType<{
|
|
147
147
|
printing: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
148
148
|
}>, []>>>;
|
|
149
149
|
}, []>>>, false>;
|
|
@@ -156,27 +156,27 @@ export declare const Weapon: Entity<"Weapon", {
|
|
|
156
156
|
rules: import("tsondb/schema/def").MemberDecl<String, false>;
|
|
157
157
|
advantage: import("tsondb/schema/def").MemberDecl<String, false>;
|
|
158
158
|
disadvantage: import("tsondb/schema/def").MemberDecl<String, false>;
|
|
159
|
-
errata: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Errata", import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"Erratum",
|
|
159
|
+
errata: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Errata", import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"Erratum", ObjectType<{
|
|
160
160
|
date: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").DateType, true>;
|
|
161
161
|
description: import("tsondb/schema/def").MemberDecl<String, true>;
|
|
162
162
|
}>, []>>>, []>>, false>;
|
|
163
163
|
}>, true>;
|
|
164
164
|
}, undefined>;
|
|
165
|
-
export declare const ImprovisedWeapon: TypeAlias<"ImprovisedWeapon",
|
|
165
|
+
export declare const ImprovisedWeapon: TypeAlias<"ImprovisedWeapon", ObjectType<{
|
|
166
166
|
melee_uses: import("tsondb/schema/def").MemberDecl<NestedEntityMap<string, {
|
|
167
|
-
damage: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"MeleeDamage",
|
|
168
|
-
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice",
|
|
167
|
+
damage: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"MeleeDamage", ObjectType<{
|
|
168
|
+
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice", ObjectType<{
|
|
169
169
|
number: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
170
170
|
sides: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"DieType", import("tsondb/schema/def").IntegerType, []>>, true>;
|
|
171
171
|
}>, []>>, true>;
|
|
172
172
|
flat: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
173
173
|
}>, []>>, true>;
|
|
174
174
|
damage_threshold: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"PrimaryAttributeDamageThreshold", {
|
|
175
|
-
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultPrimaryAttributeDamageThreshold",
|
|
175
|
+
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultPrimaryAttributeDamageThreshold", ObjectType<{
|
|
176
176
|
threshold: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
177
177
|
}>, []>>>;
|
|
178
|
-
List: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"PrimaryAttributeDamageThresholdList",
|
|
179
|
-
list: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"SinglePrimaryAttributeDamageThreshold",
|
|
178
|
+
List: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"PrimaryAttributeDamageThresholdList", ObjectType<{
|
|
179
|
+
list: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"SinglePrimaryAttributeDamageThreshold", ObjectType<{
|
|
180
180
|
attribute: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ReferenceIdentifierType, true>;
|
|
181
181
|
threshold: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
182
182
|
}>, []>>>, true>;
|
|
@@ -189,7 +189,7 @@ export declare const ImprovisedWeapon: TypeAlias<"ImprovisedWeapon", Object<{
|
|
|
189
189
|
size: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"ShieldSize", {
|
|
190
190
|
Small: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
191
191
|
Medium: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
192
|
-
Large: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"LargeShieldSize",
|
|
192
|
+
Large: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"LargeShieldSize", ObjectType<{
|
|
193
193
|
attack_penalty: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
194
194
|
}>, []>>>;
|
|
195
195
|
}, []>>, false>;
|
|
@@ -199,8 +199,8 @@ export declare const ImprovisedWeapon: TypeAlias<"ImprovisedWeapon", Object<{
|
|
|
199
199
|
}>, false>;
|
|
200
200
|
ranged_uses: import("tsondb/schema/def").MemberDecl<NestedEntityMap<string, {
|
|
201
201
|
damage: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"RangedDamage", {
|
|
202
|
-
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultRangedDamage",
|
|
203
|
-
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice",
|
|
202
|
+
Default: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], TypeAlias<"DefaultRangedDamage", ObjectType<{
|
|
203
|
+
dice: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Dice", ObjectType<{
|
|
204
204
|
number: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
205
205
|
sides: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"DieType", import("tsondb/schema/def").IntegerType, []>>, true>;
|
|
206
206
|
}>, []>>, true>;
|
|
@@ -209,10 +209,10 @@ export declare const ImprovisedWeapon: TypeAlias<"ImprovisedWeapon", Object<{
|
|
|
209
209
|
NotApplicable: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
210
210
|
Special: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
211
211
|
}, []>>, true>;
|
|
212
|
-
reload_time: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"ReloadTime",
|
|
212
|
+
reload_time: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<[], TypeAlias<"ReloadTime", ObjectType<{
|
|
213
213
|
value: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
214
214
|
}>, []>>>, true>;
|
|
215
|
-
range: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RangeBrackets",
|
|
215
|
+
range: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RangeBrackets", ObjectType<{
|
|
216
216
|
close: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
217
217
|
medium: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
218
218
|
far: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
@@ -221,20 +221,20 @@ export declare const ImprovisedWeapon: TypeAlias<"ImprovisedWeapon", Object<{
|
|
|
221
221
|
length: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"Length", import("tsondb/schema/def").IntegerType, []>>, false>;
|
|
222
222
|
is_improvised_weapon: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").BooleanType, true>;
|
|
223
223
|
}>, false>;
|
|
224
|
-
restrictedTo: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedTo",
|
|
225
|
-
races: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToRaces",
|
|
224
|
+
restrictedTo: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedTo", ObjectType<{
|
|
225
|
+
races: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToRaces", ObjectType<{
|
|
226
226
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
227
227
|
}>, []>>, false>;
|
|
228
|
-
cultures: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToCultures",
|
|
228
|
+
cultures: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToCultures", ObjectType<{
|
|
229
229
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
230
230
|
}>, []>>, false>;
|
|
231
|
-
professions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToProfessions",
|
|
231
|
+
professions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToProfessions", ObjectType<{
|
|
232
232
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
233
233
|
}>, []>>, false>;
|
|
234
|
-
magicalTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToMagicalTraditions",
|
|
234
|
+
magicalTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToMagicalTraditions", ObjectType<{
|
|
235
235
|
scope: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
|
|
236
236
|
}>, []>>, false>;
|
|
237
|
-
blessedTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToBlessedTraditions",
|
|
237
|
+
blessedTraditions: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], TypeAlias<"RestrictedToBlessedTraditions", ObjectType<{
|
|
238
238
|
scope: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"RestrictedToBlessedTraditionsScope", {
|
|
239
239
|
Specific: import("tsondb/schema/def").EnumCaseDecl<import("tsondb/schema/def").ArrayType<import("tsondb/schema/def").ReferenceIdentifierType>>;
|
|
240
240
|
Church: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Entity, IncludeIdentifier, NestedEntityMap,
|
|
1
|
+
import { Entity, IncludeIdentifier, NestedEntityMap, ObjectType, Optional, Required, String, TypeAlias, } from "tsondb/schema/def";
|
|
2
2
|
import { CloseCombatTechnique, RangedCombatTechnique } from "../../CombatTechnique.js";
|
|
3
3
|
import { NestedTranslationMap } from "../../Locale.js";
|
|
4
4
|
import { Errata } from "../../source/_Erratum.js";
|
|
@@ -6,10 +6,11 @@ import { src } from "../../source/_PublicationRef.js";
|
|
|
6
6
|
import { Complexity, Cost, RestrictedTo, StructurePoints, Weight } from "./_Item.js";
|
|
7
7
|
import { MeleeWeapon } from "./_MeleeWeapon.js";
|
|
8
8
|
import { RangedWeapon } from "./_RangedWeapon.js";
|
|
9
|
+
import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
|
|
9
10
|
export const Weapon = Entity(import.meta.url, {
|
|
10
11
|
name: "Weapon",
|
|
11
12
|
namePlural: "Weapons",
|
|
12
|
-
type: () =>
|
|
13
|
+
type: () => ObjectType({
|
|
13
14
|
cost: Required({
|
|
14
15
|
comment: "The cost in silverthalers.",
|
|
15
16
|
type: IncludeIdentifier(Cost),
|
|
@@ -49,7 +50,7 @@ export const Weapon = Entity(import.meta.url, {
|
|
|
49
50
|
type: IncludeIdentifier(RestrictedTo),
|
|
50
51
|
}),
|
|
51
52
|
src,
|
|
52
|
-
translations: NestedTranslationMap(Required, "Weapon",
|
|
53
|
+
translations: NestedTranslationMap(Required, "Weapon", ObjectType({
|
|
53
54
|
name: Required({
|
|
54
55
|
comment: "The item’s name.",
|
|
55
56
|
type: String({ minLength: 1 }),
|
|
@@ -86,10 +87,11 @@ export const Weapon = Entity(import.meta.url, {
|
|
|
86
87
|
keyPathInEntityMap: "name",
|
|
87
88
|
},
|
|
88
89
|
],
|
|
90
|
+
customConstraints: params => checkWeaponCombatTechniqueIntegrity(params, false),
|
|
89
91
|
});
|
|
90
92
|
export const ImprovisedWeapon = TypeAlias(import.meta.url, {
|
|
91
93
|
name: "ImprovisedWeapon",
|
|
92
|
-
type: () =>
|
|
94
|
+
type: () => ObjectType({
|
|
93
95
|
melee_uses: Optional({
|
|
94
96
|
comment: "A list of stat blocks for each close combat technique this weapon can be used with.",
|
|
95
97
|
type: NestedEntityMap({
|
|
@@ -112,7 +114,7 @@ export const ImprovisedWeapon = TypeAlias(import.meta.url, {
|
|
|
112
114
|
comment: "Define if during character creation this weapon can only be bought by a specific subset of characters.",
|
|
113
115
|
type: IncludeIdentifier(RestrictedTo),
|
|
114
116
|
}),
|
|
115
|
-
translations: NestedTranslationMap(Optional, "ImprovisedWeapon",
|
|
117
|
+
translations: NestedTranslationMap(Optional, "ImprovisedWeapon", ObjectType({
|
|
116
118
|
advantage: Optional({
|
|
117
119
|
comment: "The weapon advantage text.",
|
|
118
120
|
type: String({ minLength: 1, isMarkdown: true }),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Entity, IncludeIdentifier, Object, Optional, Required } from "tsondb/schema/def";
|
|
2
2
|
import { src } from "../../source/_PublicationRef.js";
|
|
3
3
|
import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
|
|
4
|
+
import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
|
|
4
5
|
export const WeaponAccessory = Entity(import.meta.url, {
|
|
5
6
|
name: "WeaponAccessory",
|
|
6
7
|
namePlural: "WeaponAccessories",
|
|
@@ -35,4 +36,13 @@ export const WeaponAccessory = Entity(import.meta.url, {
|
|
|
35
36
|
keyPathInEntityMap: "name",
|
|
36
37
|
},
|
|
37
38
|
],
|
|
39
|
+
customConstraints: ({ instanceContent, ...rest }) => {
|
|
40
|
+
if (instanceContent.combat_use && instanceContent.combat_use.kind === "Weapon") {
|
|
41
|
+
return checkWeaponCombatTechniqueIntegrity({
|
|
42
|
+
...rest,
|
|
43
|
+
instanceContent: instanceContent.combat_use.Weapon,
|
|
44
|
+
}, true);
|
|
45
|
+
}
|
|
46
|
+
return [];
|
|
47
|
+
},
|
|
38
48
|
});
|
|
@@ -3,8 +3,10 @@ import { BlessedTraditionIdentifier, CultureIdentifier, MagicalTraditionIdentifi
|
|
|
3
3
|
import { NestedTranslationMap } from "../../Locale.js";
|
|
4
4
|
import { Errata } from "../../source/_Erratum.js";
|
|
5
5
|
import { src } from "../../source/_PublicationRef.js";
|
|
6
|
+
import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
|
|
6
7
|
import { SecondaryArmor } from "./Armor.js";
|
|
7
8
|
import { ImprovisedWeapon } from "./Weapon.js";
|
|
9
|
+
const COMBAT_USE = "combat_use";
|
|
8
10
|
export const DefaultItem = (sourceUrl, singularName, pluralName) => Entity(sourceUrl, {
|
|
9
11
|
name: singularName,
|
|
10
12
|
namePlural: pluralName ?? `${singularName}s`,
|
|
@@ -25,7 +27,7 @@ export const DefaultItem = (sourceUrl, singularName, pluralName) => Entity(sourc
|
|
|
25
27
|
comment: "The structure points of the item. Use an array if the item consists of multiple components that have individual structure points.",
|
|
26
28
|
type: IncludeIdentifier(StructurePoints),
|
|
27
29
|
}),
|
|
28
|
-
|
|
30
|
+
[COMBAT_USE]: Optional({
|
|
29
31
|
comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
|
|
30
32
|
type: IncludeIdentifier(CombatUse),
|
|
31
33
|
}),
|
|
@@ -39,6 +41,16 @@ export const DefaultItem = (sourceUrl, singularName, pluralName) => Entity(sourc
|
|
|
39
41
|
keyPathInEntityMap: "name",
|
|
40
42
|
},
|
|
41
43
|
],
|
|
44
|
+
customConstraints: ({ instanceContent, ...rest }) => {
|
|
45
|
+
const combatUse = instanceContent.combat_use;
|
|
46
|
+
if (combatUse && combatUse.kind === "Weapon") {
|
|
47
|
+
return checkWeaponCombatTechniqueIntegrity({
|
|
48
|
+
...rest,
|
|
49
|
+
instanceContent: combatUse.Weapon,
|
|
50
|
+
}, true);
|
|
51
|
+
}
|
|
52
|
+
return [];
|
|
53
|
+
},
|
|
42
54
|
});
|
|
43
55
|
export const DefaultItemTranslations = (singularName) => NestedTranslationMap(Required, singularName, Object({
|
|
44
56
|
name: Required({
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import { Array, Enum, EnumCase, IncludeIdentifier, Integer,
|
|
1
|
+
import { Array, Enum, EnumCase, IncludeIdentifier, Integer, ObjectType, TypeAlias, type GetDisplayNameWithId, type GetInstanceById } from "tsondb/schema/def";
|
|
2
|
+
import type { MeleeWeapon, RangedWeapon } from "../../../../gen/types.js";
|
|
2
3
|
export declare const PrimaryAttributeDamageThreshold: Enum<"PrimaryAttributeDamageThreshold", {
|
|
3
|
-
Default: EnumCase<IncludeIdentifier<[], TypeAlias<"DefaultPrimaryAttributeDamageThreshold",
|
|
4
|
+
Default: EnumCase<IncludeIdentifier<[], TypeAlias<"DefaultPrimaryAttributeDamageThreshold", ObjectType<{
|
|
4
5
|
threshold: import("tsondb/schema/def").MemberDecl<Integer, true>;
|
|
5
6
|
}>, []>>>;
|
|
6
|
-
List: EnumCase<IncludeIdentifier<[], TypeAlias<"PrimaryAttributeDamageThresholdList",
|
|
7
|
-
list: import("tsondb/schema/def").MemberDecl<Array<IncludeIdentifier<[], TypeAlias<"SinglePrimaryAttributeDamageThreshold",
|
|
7
|
+
List: EnumCase<IncludeIdentifier<[], TypeAlias<"PrimaryAttributeDamageThresholdList", ObjectType<{
|
|
8
|
+
list: import("tsondb/schema/def").MemberDecl<Array<IncludeIdentifier<[], TypeAlias<"SinglePrimaryAttributeDamageThreshold", ObjectType<{
|
|
8
9
|
attribute: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ReferenceIdentifierType, true>;
|
|
9
10
|
threshold: import("tsondb/schema/def").MemberDecl<Integer, true>;
|
|
10
11
|
}>, []>>>, true>;
|
|
11
12
|
}>, []>>>;
|
|
12
13
|
}, []>;
|
|
13
14
|
export declare const Length: TypeAlias<"Length", Integer, []>;
|
|
15
|
+
export declare const checkWeaponCombatTechniqueIntegrity: ({ instanceContent, getInstanceById, getDisplayNameWithId, }: {
|
|
16
|
+
instanceContent: {
|
|
17
|
+
melee_uses?: Record<string, MeleeWeapon>;
|
|
18
|
+
ranged_uses?: Record<string, RangedWeapon>;
|
|
19
|
+
};
|
|
20
|
+
getInstanceById: GetInstanceById;
|
|
21
|
+
getDisplayNameWithId: GetDisplayNameWithId;
|
|
22
|
+
}, _secondary: boolean) => string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Array, Enum, EnumCase, IncludeIdentifier, Integer,
|
|
1
|
+
import { Array, Enum, EnumCase, IncludeIdentifier, Integer, ObjectType, Required, TypeAlias, } from "tsondb/schema/def";
|
|
2
2
|
import { AttributeIdentifier } from "../../_Identifier.js";
|
|
3
3
|
export const PrimaryAttributeDamageThreshold = Enum(import.meta.url, {
|
|
4
4
|
name: "PrimaryAttributeDamageThreshold",
|
|
@@ -10,7 +10,7 @@ export const PrimaryAttributeDamageThreshold = Enum(import.meta.url, {
|
|
|
10
10
|
});
|
|
11
11
|
const DefaultPrimaryAttributeDamageThreshold = TypeAlias(import.meta.url, {
|
|
12
12
|
name: "DefaultPrimaryAttributeDamageThreshold",
|
|
13
|
-
type: () =>
|
|
13
|
+
type: () => ObjectType({
|
|
14
14
|
threshold: Required({
|
|
15
15
|
comment: "The attribute value representing the damage threshold for the primary attribute of the item's combat technique.",
|
|
16
16
|
type: Integer({ minimum: 1 }),
|
|
@@ -19,7 +19,7 @@ const DefaultPrimaryAttributeDamageThreshold = TypeAlias(import.meta.url, {
|
|
|
19
19
|
});
|
|
20
20
|
const PrimaryAttributeDamageThresholdList = TypeAlias(import.meta.url, {
|
|
21
21
|
name: "PrimaryAttributeDamageThresholdList",
|
|
22
|
-
type: () =>
|
|
22
|
+
type: () => ObjectType({
|
|
23
23
|
list: Required({
|
|
24
24
|
comment: "A list of primary attributes with their associated threshold.",
|
|
25
25
|
type: Array(IncludeIdentifier(SinglePrimaryAttributeDamageThreshold), {
|
|
@@ -31,7 +31,7 @@ const PrimaryAttributeDamageThresholdList = TypeAlias(import.meta.url, {
|
|
|
31
31
|
});
|
|
32
32
|
const SinglePrimaryAttributeDamageThreshold = TypeAlias(import.meta.url, {
|
|
33
33
|
name: "SinglePrimaryAttributeDamageThreshold",
|
|
34
|
-
type: () =>
|
|
34
|
+
type: () => ObjectType({
|
|
35
35
|
attribute: Required({
|
|
36
36
|
comment: "The primary attribute.",
|
|
37
37
|
type: AttributeIdentifier(),
|
|
@@ -47,3 +47,31 @@ export const Length = TypeAlias(import.meta.url, {
|
|
|
47
47
|
comment: "The length of the weapon in cm/halffingers.",
|
|
48
48
|
type: () => Integer({ minimum: 1 }),
|
|
49
49
|
});
|
|
50
|
+
export const checkWeaponCombatTechniqueIntegrity = ({ instanceContent, getInstanceById, getDisplayNameWithId, }, _secondary) => {
|
|
51
|
+
const checkPart = (rule, value, name, type, id) => (rule.kind === "Prohibited") === (value === undefined) || rule.kind === "Optional"
|
|
52
|
+
? undefined
|
|
53
|
+
: `${name} must${rule.kind === "Required" ? "" : " not"} be provided for ${type} combat technique ${getDisplayNameWithId(type === "close" ? "CloseCombatTechnique" : "RangedCombatTechnique", id)}`;
|
|
54
|
+
return [
|
|
55
|
+
instanceContent.melee_uses === undefined && instanceContent.ranged_uses === undefined
|
|
56
|
+
? "either melee uses or ranged uses have to be provided"
|
|
57
|
+
: undefined,
|
|
58
|
+
...Object.entries(instanceContent.melee_uses ?? {}).flatMap(([ctId, meleeUse]) => {
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- integrity has been checked, it must be present
|
|
60
|
+
const ct = getInstanceById("CloseCombatTechnique", ctId);
|
|
61
|
+
return [
|
|
62
|
+
checkPart(ct.special.can_parry, meleeUse.parryModifier, "a parry modifier", "close", ctId),
|
|
63
|
+
checkPart(ct.special.has_damage_threshold, meleeUse.damage_threshold, "a damage threshold", "close", ctId),
|
|
64
|
+
checkPart(ct.special.has_length, meleeUse.length, "a length", "close", ctId),
|
|
65
|
+
checkPart(ct.special.has_reach, meleeUse.reach, "a reach", "close", ctId),
|
|
66
|
+
checkPart(ct.special.has_shield_size, meleeUse.size, "a shield size", "close", ctId),
|
|
67
|
+
].filter(v => v !== undefined);
|
|
68
|
+
}),
|
|
69
|
+
...Object.entries(instanceContent.ranged_uses ?? {}).flatMap(([ctId, rangedUse]) => {
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- integrity has been checked, it must be present
|
|
71
|
+
const ct = getInstanceById("RangedCombatTechnique", ctId);
|
|
72
|
+
return [
|
|
73
|
+
checkPart(ct.special.has_ammunition, rangedUse.ammunition, "an ammunition", "ranged", ctId),
|
|
74
|
+
].filter(v => v !== undefined);
|
|
75
|
+
}),
|
|
76
|
+
].filter(v => v !== undefined);
|
|
77
|
+
};
|
|
@@ -19,6 +19,7 @@ export declare const AdvancedCombatSpecialAbility: Entity<"AdvancedCombatSpecial
|
|
|
19
19
|
Races: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
20
20
|
Cultures: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
21
21
|
RacesAndCultures: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
22
|
+
HomunculusTypes: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
22
23
|
BlessedTraditions: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"BlessedTraditionsSelectOptionCategory", Object<{
|
|
23
24
|
require_principles: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").BooleanType, false>;
|
|
24
25
|
}>, []>>>;
|
|
@@ -666,6 +667,15 @@ export declare const AdvancedCombatSpecialAbility: Entity<"AdvancedCombatSpecial
|
|
|
666
667
|
}, []>>>, false>;
|
|
667
668
|
}>, [Ref: import("tsondb/schema/def").TypeParameter<"Ref", import("tsondb/schema/def").Type>]>>>;
|
|
668
669
|
}, []>>>, true>;
|
|
670
|
+
bindingCost: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").EnumDecl<"SelectOptionsBindingCostValue", {
|
|
671
|
+
Fixed: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsFixedBindingCostValue", Object<{
|
|
672
|
+
map: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsFixedBindingCostValueMapping", Object<{
|
|
673
|
+
id: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").TypeArgumentType<import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>>, true>;
|
|
674
|
+
bindingCost: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
675
|
+
}>, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>>, true>;
|
|
676
|
+
default: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
677
|
+
}>, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>>;
|
|
678
|
+
}, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>, false>;
|
|
669
679
|
ap_value: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").EnumDecl<"SelectOptionsAdventurePointsValue", {
|
|
670
680
|
DerivedFromImprovementCost: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsDeriveAdventurePointsValueFromImprovementCost", Object<{
|
|
671
681
|
multiplier: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
@@ -1089,6 +1099,7 @@ export declare const AdvancedCombatSpecialAbility: Entity<"AdvancedCombatSpecial
|
|
|
1089
1099
|
}>, []>>>;
|
|
1090
1100
|
DerivedFromSelection: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"AdventurePointsDerivedFromSelection", Object<{
|
|
1091
1101
|
translations: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").NestedEntityMapType<"AdventurePointsDerivedFromSelectionTranslation", {
|
|
1102
|
+
listPrepend: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").StringType, false>;
|
|
1092
1103
|
replacement: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").StringType, false>;
|
|
1093
1104
|
}>, false>;
|
|
1094
1105
|
}>, []>>>;
|
|
@@ -14,6 +14,7 @@ export declare const AdvancedKarmaSpecialAbility: Entity<"AdvancedKarmaSpecialAb
|
|
|
14
14
|
Races: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
15
15
|
Cultures: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
16
16
|
RacesAndCultures: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
17
|
+
HomunculusTypes: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
17
18
|
BlessedTraditions: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"BlessedTraditionsSelectOptionCategory", Object<{
|
|
18
19
|
require_principles: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").BooleanType, false>;
|
|
19
20
|
}>, []>>>;
|
|
@@ -661,6 +662,15 @@ export declare const AdvancedKarmaSpecialAbility: Entity<"AdvancedKarmaSpecialAb
|
|
|
661
662
|
}, []>>>, false>;
|
|
662
663
|
}>, [Ref: import("tsondb/schema/def").TypeParameter<"Ref", import("tsondb/schema/def").Type>]>>>;
|
|
663
664
|
}, []>>>, true>;
|
|
665
|
+
bindingCost: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").EnumDecl<"SelectOptionsBindingCostValue", {
|
|
666
|
+
Fixed: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsFixedBindingCostValue", Object<{
|
|
667
|
+
map: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsFixedBindingCostValueMapping", Object<{
|
|
668
|
+
id: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").TypeArgumentType<import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>>, true>;
|
|
669
|
+
bindingCost: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
670
|
+
}>, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>>, true>;
|
|
671
|
+
default: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
672
|
+
}>, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>>;
|
|
673
|
+
}, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>, false>;
|
|
664
674
|
ap_value: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").EnumDecl<"SelectOptionsAdventurePointsValue", {
|
|
665
675
|
DerivedFromImprovementCost: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsDeriveAdventurePointsValueFromImprovementCost", Object<{
|
|
666
676
|
multiplier: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
@@ -970,6 +980,7 @@ export declare const AdvancedKarmaSpecialAbility: Entity<"AdvancedKarmaSpecialAb
|
|
|
970
980
|
}>, []>>>;
|
|
971
981
|
DerivedFromSelection: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"AdventurePointsDerivedFromSelection", Object<{
|
|
972
982
|
translations: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").NestedEntityMapType<"AdventurePointsDerivedFromSelectionTranslation", {
|
|
983
|
+
listPrepend: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").StringType, false>;
|
|
973
984
|
replacement: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").StringType, false>;
|
|
974
985
|
}>, false>;
|
|
975
986
|
}>, []>>>;
|
|
@@ -14,6 +14,7 @@ export declare const AdvancedMagicalSpecialAbility: Entity<"AdvancedMagicalSpeci
|
|
|
14
14
|
Races: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
15
15
|
Cultures: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
16
16
|
RacesAndCultures: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
17
|
+
HomunculusTypes: import("tsondb/schema/def").EnumCaseDecl<null>;
|
|
17
18
|
BlessedTraditions: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"BlessedTraditionsSelectOptionCategory", Object<{
|
|
18
19
|
require_principles: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").BooleanType, false>;
|
|
19
20
|
}>, []>>>;
|
|
@@ -661,6 +662,15 @@ export declare const AdvancedMagicalSpecialAbility: Entity<"AdvancedMagicalSpeci
|
|
|
661
662
|
}, []>>>, false>;
|
|
662
663
|
}>, [Ref: import("tsondb/schema/def").TypeParameter<"Ref", import("tsondb/schema/def").Type>]>>>;
|
|
663
664
|
}, []>>>, true>;
|
|
665
|
+
bindingCost: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").EnumDecl<"SelectOptionsBindingCostValue", {
|
|
666
|
+
Fixed: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsFixedBindingCostValue", Object<{
|
|
667
|
+
map: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ArrayType<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsFixedBindingCostValueMapping", Object<{
|
|
668
|
+
id: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").TypeArgumentType<import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>>, true>;
|
|
669
|
+
bindingCost: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
670
|
+
}>, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>>, true>;
|
|
671
|
+
default: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
|
|
672
|
+
}>, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>>;
|
|
673
|
+
}, [Identifier: import("tsondb/schema/def").TypeParameter<"Identifier", import("tsondb/schema/def").Type>]>>, false>;
|
|
664
674
|
ap_value: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<import("tsondb/schema/def").TypeParameter<string, import("tsondb/schema/def").Type>[], import("tsondb/schema/def").EnumDecl<"SelectOptionsAdventurePointsValue", {
|
|
665
675
|
DerivedFromImprovementCost: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"SelectOptionsDeriveAdventurePointsValueFromImprovementCost", Object<{
|
|
666
676
|
multiplier: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
|
|
@@ -970,6 +980,7 @@ export declare const AdvancedMagicalSpecialAbility: Entity<"AdvancedMagicalSpeci
|
|
|
970
980
|
}>, []>>>;
|
|
971
981
|
DerivedFromSelection: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"AdventurePointsDerivedFromSelection", Object<{
|
|
972
982
|
translations: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").NestedEntityMapType<"AdventurePointsDerivedFromSelectionTranslation", {
|
|
983
|
+
listPrepend: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").StringType, false>;
|
|
973
984
|
replacement: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").StringType, false>;
|
|
974
985
|
}>, false>;
|
|
975
986
|
}>, []>>>;
|