afnm-types 0.6.16 → 0.6.20
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/dist/GameScreen.d.ts +1 -1
- package/dist/background.d.ts +2 -1
- package/dist/buff.d.ts +8 -0
- package/dist/character.d.ts +51 -1
- package/dist/components.d.ts +2 -0
- package/dist/crafting.d.ts +1 -0
- package/dist/craftingBuff.d.ts +1 -0
- package/dist/craftingState.d.ts +1 -0
- package/dist/craftingTechnique.d.ts +1 -0
- package/dist/destiny.d.ts +7 -3
- package/dist/entity.d.ts +146 -2
- package/dist/herbField.d.ts +12 -8
- package/dist/item.d.ts +25 -9
- package/dist/item.js +6 -0
- package/dist/itemHarmonyType.js +2 -0
- package/dist/keybindings.d.ts +20 -0
- package/dist/keybindings.js +509 -0
- package/dist/life.d.ts +36 -0
- package/dist/life.js +1 -0
- package/dist/location.d.ts +5 -2
- package/dist/location.js +1 -0
- package/dist/reduxState.d.ts +35 -17
- package/dist/stat.d.ts +1 -1
- package/dist/stat.js +6 -3
- package/dist/technique.d.ts +3 -0
- package/dist/technique.js +8 -0
- package/package.json +1 -1
package/dist/GameScreen.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type GameScreen = 'location' | 'recipe' | 'mission' | 'craftingHall' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'pillarGrid' | 'fallenStar' | 'trainingGround';
|
|
1
|
+
export type GameScreen = 'location' | 'recipe' | 'mission' | 'craftingHall' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'reforge' | 'pillarGrid' | 'fallenStar' | 'trainingGround';
|
package/dist/background.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Destiny } from './destiny';
|
|
2
2
|
import { Item } from './item';
|
|
3
|
-
import { PhysicalStatistic, SocialStatistic } from './stat';
|
|
3
|
+
import { CombatStatistic, CraftingStatistic, PhysicalStatistic, Scaling, SocialStatistic } from './stat';
|
|
4
4
|
export interface Background {
|
|
5
5
|
name: string;
|
|
6
6
|
description: string;
|
|
7
7
|
physicalStats?: Partial<Record<PhysicalStatistic, number>>;
|
|
8
8
|
socialStats?: Partial<Record<SocialStatistic, number>>;
|
|
9
|
+
rawStats?: Partial<Record<CombatStatistic | CraftingStatistic, Scaling>>;
|
|
9
10
|
reputation?: Record<string, number>;
|
|
10
11
|
spiritualRoot?: number;
|
|
11
12
|
spiritStones?: number;
|
package/dist/buff.d.ts
CHANGED
|
@@ -117,6 +117,14 @@ export interface CompanionCombatImage extends BaseCombatImage {
|
|
|
117
117
|
position: 'companion';
|
|
118
118
|
scale?: number;
|
|
119
119
|
stacksScale?: number;
|
|
120
|
+
executeImage?: {
|
|
121
|
+
image: string;
|
|
122
|
+
scale: number;
|
|
123
|
+
imageOffset?: {
|
|
124
|
+
x: number;
|
|
125
|
+
y: number;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
120
128
|
}
|
|
121
129
|
export interface GroundCombatImage extends BaseCombatImage {
|
|
122
130
|
position: 'ground';
|
package/dist/character.d.ts
CHANGED
|
@@ -18,9 +18,57 @@ export interface Character {
|
|
|
18
18
|
portrait: string;
|
|
19
19
|
image: string;
|
|
20
20
|
imageScale?: number;
|
|
21
|
+
supportImage?: {
|
|
22
|
+
image: string;
|
|
23
|
+
scale: number;
|
|
24
|
+
};
|
|
25
|
+
defensiveImage?: {
|
|
26
|
+
image: string;
|
|
27
|
+
scale: number;
|
|
28
|
+
};
|
|
29
|
+
utilityImage?: {
|
|
30
|
+
image: string;
|
|
31
|
+
scale: number;
|
|
32
|
+
};
|
|
33
|
+
aggressiveImage?: {
|
|
34
|
+
image: string;
|
|
35
|
+
scale: number;
|
|
36
|
+
};
|
|
37
|
+
offensiveImage?: {
|
|
38
|
+
image: string;
|
|
39
|
+
scale: number;
|
|
40
|
+
};
|
|
41
|
+
hitImage?: {
|
|
42
|
+
image: string;
|
|
43
|
+
scale: number;
|
|
44
|
+
};
|
|
21
45
|
imageOverride?: {
|
|
22
46
|
image: string;
|
|
23
47
|
portrait: string;
|
|
48
|
+
supportImage?: {
|
|
49
|
+
image: string;
|
|
50
|
+
scale: number;
|
|
51
|
+
};
|
|
52
|
+
defensiveImage?: {
|
|
53
|
+
image: string;
|
|
54
|
+
scale: number;
|
|
55
|
+
};
|
|
56
|
+
utilityImage?: {
|
|
57
|
+
image: string;
|
|
58
|
+
scale: number;
|
|
59
|
+
};
|
|
60
|
+
aggressiveImage?: {
|
|
61
|
+
image: string;
|
|
62
|
+
scale: number;
|
|
63
|
+
};
|
|
64
|
+
offensiveImage?: {
|
|
65
|
+
image: string;
|
|
66
|
+
scale: number;
|
|
67
|
+
};
|
|
68
|
+
hitImage?: {
|
|
69
|
+
image: string;
|
|
70
|
+
scale: number;
|
|
71
|
+
};
|
|
24
72
|
condition: string;
|
|
25
73
|
}[];
|
|
26
74
|
}
|
|
@@ -85,6 +133,7 @@ export interface CharacterState {
|
|
|
85
133
|
followCooldown: number;
|
|
86
134
|
aidBreakthroughCooldown: number;
|
|
87
135
|
dualCultivationCooldown: number;
|
|
136
|
+
customCooldowns: Record<string, number>;
|
|
88
137
|
}
|
|
89
138
|
interface BaseCharacterInteraction {
|
|
90
139
|
condition: string;
|
|
@@ -142,7 +191,8 @@ export interface CustomCharacterInteractionBlock {
|
|
|
142
191
|
name: string;
|
|
143
192
|
tooltip: string;
|
|
144
193
|
icon: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>;
|
|
145
|
-
|
|
194
|
+
interaction: CustomCharacterInteraction;
|
|
195
|
+
cooldown?: number;
|
|
146
196
|
}
|
|
147
197
|
export interface CustomCharacterInteraction extends BaseCharacterInteraction {
|
|
148
198
|
disableCondition?: string;
|
package/dist/components.d.ts
CHANGED
|
@@ -17,12 +17,14 @@ interface GameDialogProps {
|
|
|
17
17
|
allowKeybinding?: boolean;
|
|
18
18
|
backgroundPaper?: ReactNode;
|
|
19
19
|
title?: string;
|
|
20
|
+
removeBorder?: boolean;
|
|
20
21
|
}
|
|
21
22
|
export type GameDialogFC = React.FC<PropsWithChildren<GameDialogProps>>;
|
|
22
23
|
export type GameButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement, ButtonProps & {
|
|
23
24
|
keybinding?: string;
|
|
24
25
|
keyPriority?: number;
|
|
25
26
|
fancyBorder?: boolean;
|
|
27
|
+
keyContext?: string;
|
|
26
28
|
}>;
|
|
27
29
|
export type GameIconButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement, IconButtonProps & {
|
|
28
30
|
hoverSfx?: SoundEffectName;
|
package/dist/crafting.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare const craftingConditionToColour: Record<CraftingCondition, string
|
|
|
16
16
|
export declare const craftingConditionToIcon: Record<CraftingCondition, OverridableComponent<SvgIconTypeMap<{}, 'svg'>>>;
|
|
17
17
|
export interface RecipeConditionEffect {
|
|
18
18
|
name: string;
|
|
19
|
+
colour: string;
|
|
19
20
|
conditionEffects: Record<CraftingCondition, {
|
|
20
21
|
tooltip: string;
|
|
21
22
|
effects: CraftingConditionEffect[];
|
package/dist/craftingBuff.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export interface CraftingBuff {
|
|
|
42
42
|
stacksScaling?: number;
|
|
43
43
|
animations?: ('bump' | 'buff' | 'completion' | 'perfection' | 'stabilityup' | 'stabilitydown' | 'pool')[];
|
|
44
44
|
cantUpgrade?: boolean;
|
|
45
|
+
bonusHiddenPotential?: Scaling;
|
|
45
46
|
}
|
|
46
47
|
export type CraftingBuffEffect = CompletionEffect | PerfectionEffect | StabilityEffect | PoolEffect | NegateEffect | CreateBuffEffect | AddStackEffect | ChangeToxicityEffect | MaxStabilityEffect;
|
|
47
48
|
interface BaseEffect {
|
package/dist/craftingState.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ export interface ProgressState {
|
|
|
55
55
|
effectTracking: Record<string, CraftingEffectTracking>;
|
|
56
56
|
actionTracking: Record<string, ActionTracking>;
|
|
57
57
|
pillTracking: Record<string, number>;
|
|
58
|
+
lastActionType?: CraftingTechniqueType;
|
|
58
59
|
}
|
|
59
60
|
export interface FailedCraftingResult {
|
|
60
61
|
state: 'failed';
|
package/dist/destiny.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { CombatStatistic, CraftingStatistic } from './stat';
|
|
1
|
+
import { CombatStatistic, CraftingStatistic, Scaling } from './stat';
|
|
2
2
|
export interface Destiny {
|
|
3
3
|
name: string;
|
|
4
4
|
description: string;
|
|
5
|
-
combatStats?: Partial<
|
|
6
|
-
|
|
5
|
+
combatStats?: Partial<{
|
|
6
|
+
[key in CombatStatistic]: Scaling;
|
|
7
|
+
}>;
|
|
8
|
+
craftingStats?: Partial<{
|
|
9
|
+
[key in CraftingStatistic]: Scaling;
|
|
10
|
+
}>;
|
|
7
11
|
qiAbsorption?: number;
|
|
8
12
|
charisma?: number;
|
|
9
13
|
lifespan?: number;
|
package/dist/entity.d.ts
CHANGED
|
@@ -6,11 +6,21 @@ import { TechniqueElement } from './element';
|
|
|
6
6
|
import { ArtefactItem, CombatItem, CombatPillItem, ConcoctionItem, CraftingEquipmentItem, Item, ItemDesc } from './item';
|
|
7
7
|
import { Realm, RealmProgress } from './realm';
|
|
8
8
|
import { CombatStatsMap, CraftingStatsMap, PhysicalStatistic, SocialStatistic } from './stat';
|
|
9
|
-
import { KnownTechnique, Technique } from './technique';
|
|
9
|
+
import { KnownTechnique, Technique, TechniquePriority } from './technique';
|
|
10
10
|
export declare const sexes: readonly ["male", "female"];
|
|
11
11
|
export type Sex = (typeof sexes)[number];
|
|
12
12
|
export interface PlayerEntity {
|
|
13
13
|
imageIndex: number;
|
|
14
|
+
customImagePath?: string;
|
|
15
|
+
customImages?: {
|
|
16
|
+
idle?: string;
|
|
17
|
+
hit?: string;
|
|
18
|
+
support?: string;
|
|
19
|
+
defensive?: string;
|
|
20
|
+
utility?: string;
|
|
21
|
+
offensive?: string;
|
|
22
|
+
aggressive?: string;
|
|
23
|
+
};
|
|
14
24
|
realm: Realm;
|
|
15
25
|
realmOverride?: Realm;
|
|
16
26
|
realmProgress: RealmProgress;
|
|
@@ -43,7 +53,12 @@ export interface PlayerEntity {
|
|
|
43
53
|
craftingTechniques: KnownCraftingTechnique[];
|
|
44
54
|
currentEquipmentLoadout?: StoredEquipmentLoadout;
|
|
45
55
|
storedEquipmentLoadouts?: StoredEquipmentLoadout[];
|
|
56
|
+
currentGardenLayout?: StoredGardenLayout;
|
|
57
|
+
storedGardenLayouts?: StoredGardenLayout[];
|
|
58
|
+
currentPillarLayout?: StoredPillarLayout;
|
|
59
|
+
storedPillarLayouts?: StoredPillarLayout[];
|
|
46
60
|
destiny: string[];
|
|
61
|
+
background: string[];
|
|
47
62
|
monthBuffs?: Buff[];
|
|
48
63
|
injured?: boolean;
|
|
49
64
|
}
|
|
@@ -52,6 +67,54 @@ export type BattleLength = 'halfround' | '1round' | 'veryshort' | 'short' | 'med
|
|
|
52
67
|
export interface EnemyEntity {
|
|
53
68
|
name: string;
|
|
54
69
|
image: string;
|
|
70
|
+
supportImage?: {
|
|
71
|
+
image: string;
|
|
72
|
+
scale?: number;
|
|
73
|
+
imageOffset?: {
|
|
74
|
+
x: number;
|
|
75
|
+
y: number;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
defensiveImage?: {
|
|
79
|
+
image: string;
|
|
80
|
+
scale?: number;
|
|
81
|
+
imageOffset?: {
|
|
82
|
+
x: number;
|
|
83
|
+
y: number;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
utilityImage?: {
|
|
87
|
+
image: string;
|
|
88
|
+
scale?: number;
|
|
89
|
+
imageOffset?: {
|
|
90
|
+
x: number;
|
|
91
|
+
y: number;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
aggressiveImage?: {
|
|
95
|
+
image: string;
|
|
96
|
+
scale?: number;
|
|
97
|
+
imageOffset?: {
|
|
98
|
+
x: number;
|
|
99
|
+
y: number;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
offensiveImage?: {
|
|
103
|
+
image: string;
|
|
104
|
+
scale?: number;
|
|
105
|
+
imageOffset?: {
|
|
106
|
+
x: number;
|
|
107
|
+
y: number;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
hitImage?: {
|
|
111
|
+
image: string;
|
|
112
|
+
scale?: number;
|
|
113
|
+
imageOffset?: {
|
|
114
|
+
x: number;
|
|
115
|
+
y: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
55
118
|
imageScale: number;
|
|
56
119
|
imageOffset?: {
|
|
57
120
|
x: number;
|
|
@@ -123,6 +186,10 @@ export interface CraftingEntity {
|
|
|
123
186
|
inactiveBuffs?: CraftingBuff[];
|
|
124
187
|
messages: CraftingMessage[];
|
|
125
188
|
animations: ('bump' | 'buff' | 'completion' | 'perfection' | 'stabilityup' | 'stabilitydown' | 'pool' | 'failedAction')[];
|
|
189
|
+
supportImage?: string;
|
|
190
|
+
defensiveImage?: string;
|
|
191
|
+
utilityImage?: string;
|
|
192
|
+
aggressiveImage?: string;
|
|
126
193
|
}
|
|
127
194
|
export interface CraftingMessage {
|
|
128
195
|
id: number;
|
|
@@ -142,6 +209,54 @@ export interface CombatArtefact extends ArtefactItem {
|
|
|
142
209
|
export interface CombatEntity {
|
|
143
210
|
isPlayer: boolean;
|
|
144
211
|
image: string;
|
|
212
|
+
supportImage?: {
|
|
213
|
+
image: string;
|
|
214
|
+
scale: number;
|
|
215
|
+
imageOffset?: {
|
|
216
|
+
x: number;
|
|
217
|
+
y: number;
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
defensiveImage?: {
|
|
221
|
+
image: string;
|
|
222
|
+
scale: number;
|
|
223
|
+
imageOffset?: {
|
|
224
|
+
x: number;
|
|
225
|
+
y: number;
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
utilityImage?: {
|
|
229
|
+
image: string;
|
|
230
|
+
scale: number;
|
|
231
|
+
imageOffset?: {
|
|
232
|
+
x: number;
|
|
233
|
+
y: number;
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
aggressiveImage?: {
|
|
237
|
+
image: string;
|
|
238
|
+
scale: number;
|
|
239
|
+
imageOffset?: {
|
|
240
|
+
x: number;
|
|
241
|
+
y: number;
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
offensiveImage?: {
|
|
245
|
+
image: string;
|
|
246
|
+
scale: number;
|
|
247
|
+
imageOffset?: {
|
|
248
|
+
x: number;
|
|
249
|
+
y: number;
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
hitImage?: {
|
|
253
|
+
image: string;
|
|
254
|
+
scale: number;
|
|
255
|
+
imageOffset?: {
|
|
256
|
+
x: number;
|
|
257
|
+
y: number;
|
|
258
|
+
};
|
|
259
|
+
};
|
|
145
260
|
realm: Realm;
|
|
146
261
|
stats: CombatStatsMap;
|
|
147
262
|
stance: Stance;
|
|
@@ -154,7 +269,7 @@ export interface CombatEntity {
|
|
|
154
269
|
buffs: Buff[];
|
|
155
270
|
artefacts: CombatArtefact[];
|
|
156
271
|
messages: CombatMessage[];
|
|
157
|
-
animations: ('bump' | 'attack' | 'hurt' | 'barrier' | 'cleanse' | 'heal' | 'block' | 'buff' | 'debuff' | 'exhausted' | 'spawn' | 'failedTechnique' | 'droplet')[];
|
|
272
|
+
animations: ('bump' | 'attack' | 'hurt' | 'barrier' | 'cleanse' | 'heal' | 'block' | 'buff' | 'debuff' | 'exhausted' | 'spawn' | 'failedTechnique' | 'droplet' | TechniquePriority)[];
|
|
158
273
|
renderScale: number;
|
|
159
274
|
imageOffset?: {
|
|
160
275
|
x: number;
|
|
@@ -227,4 +342,33 @@ export interface StoredEquipmentLoadout {
|
|
|
227
342
|
flame?: ItemDesc;
|
|
228
343
|
};
|
|
229
344
|
}
|
|
345
|
+
export interface StoredGardenLayout {
|
|
346
|
+
name: string;
|
|
347
|
+
id: string;
|
|
348
|
+
autoName?: boolean;
|
|
349
|
+
layout: {
|
|
350
|
+
x: number;
|
|
351
|
+
y: number;
|
|
352
|
+
cropItemName?: string;
|
|
353
|
+
cropRealm?: string;
|
|
354
|
+
device?: ItemDesc;
|
|
355
|
+
}[];
|
|
356
|
+
}
|
|
357
|
+
export interface StoredPillarLayout {
|
|
358
|
+
name: string;
|
|
359
|
+
id: string;
|
|
360
|
+
autoName?: boolean;
|
|
361
|
+
layout: {
|
|
362
|
+
grid: string[];
|
|
363
|
+
shards: {
|
|
364
|
+
shard: string;
|
|
365
|
+
pos: {
|
|
366
|
+
x: number;
|
|
367
|
+
y: number;
|
|
368
|
+
rotation: number;
|
|
369
|
+
};
|
|
370
|
+
variantIndex?: number;
|
|
371
|
+
}[];
|
|
372
|
+
};
|
|
373
|
+
}
|
|
230
374
|
export {};
|
package/dist/herbField.d.ts
CHANGED
|
@@ -8,12 +8,16 @@ export interface Crop {
|
|
|
8
8
|
item: string;
|
|
9
9
|
yield: number;
|
|
10
10
|
growthDays: number;
|
|
11
|
-
cost?:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
cost?: string;
|
|
12
|
+
change: string;
|
|
13
|
+
}
|
|
14
|
+
export type DeviceEffectType = 'harvester' | 'growthBoost' | 'yieldBoost' | 'universalSoil';
|
|
15
|
+
export interface DeviceEffect {
|
|
16
|
+
type: DeviceEffectType;
|
|
17
|
+
harvestInterval?: number;
|
|
18
|
+
boostAmount?: number;
|
|
19
|
+
soilConditions?: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface DeviceProperties {
|
|
22
|
+
effects: DeviceEffect[];
|
|
19
23
|
}
|
package/dist/item.d.ts
CHANGED
|
@@ -10,15 +10,15 @@ import { Rarity } from './rarity';
|
|
|
10
10
|
import { Realm, RealmProgress } from './realm';
|
|
11
11
|
import { RecipeDifficulty } from './RecipeDifficulty';
|
|
12
12
|
import { CombatStatsMap, CraftingStatsMap, PhysicalStatistic, Scaling, SocialStatistic } from './stat';
|
|
13
|
-
import { TechniqueEffect } from './technique';
|
|
14
|
-
export declare const itemKinds: readonly ["clothing", "talisman", "artefact", "mount", "cauldron", "flame", "upgrade", "fruit", "elixir", "recipe", "technique", "action", "transport_seal", "enchantment", "pill", "reagent", "concoction", "consumable", "recuperation", "formation", "breakthrough", "pillar_shard", "material", "flare", "mystical_key", "condensation_art", "blueprint", "trophy", "treasure", "token"];
|
|
13
|
+
import { Technique, TechniqueEffect } from './technique';
|
|
14
|
+
export declare const itemKinds: readonly ["clothing", "talisman", "artefact", "mount", "cauldron", "flame", "upgrade", "fruit", "elixir", "recipe", "technique", "action", "transport_seal", "enchantment", "pill", "reagent", "concoction", "consumable", "recuperation", "formation", "breakthrough", "pillar_shard", "material", "flare", "mystical_key", "condensation_art", "blueprint", "trophy", "treasure", "token", "life_essence", "device"];
|
|
15
15
|
export type ItemKind = (typeof itemKinds)[number];
|
|
16
16
|
export type ItemCostMap = {
|
|
17
17
|
[key in ItemKind]: number;
|
|
18
18
|
};
|
|
19
19
|
export declare const buyItemCostMap: ItemCostMap;
|
|
20
20
|
export declare const sellItemCostMap: ItemCostMap;
|
|
21
|
-
export type Item = TechniqueItem | TechniqueCrystalItem | TechniqueShardItem | TechniqueEnhancementDust | TransportSealItem | SpiritFruitItem | RecipeItem | ElixirItem | TreasureItem | CraftingItem | ClothingItem | TalismanItem | ArtefactItem | PillItem | ConcoctionItem | CombatItem | CauldronItem | FlameItem | BreakthroughItem | RecuperationItem | MountItem | FlareItem | CraftingTechniqueItem | EnchantmentItem | MysticalKeyItem | CondensationArtItem | FormationItem | PillarShardItem | TrophyItem | BlueprintItem | TokenItem | UpgradeItem | CraftingReagentItem;
|
|
21
|
+
export type Item = TechniqueItem | TechniqueCrystalItem | TechniqueShardItem | TechniqueEnhancementDust | TransportSealItem | SpiritFruitItem | RecipeItem | ElixirItem | TreasureItem | CraftingItem | ClothingItem | TalismanItem | ArtefactItem | PillItem | ConcoctionItem | CombatItem | CauldronItem | FlameItem | BreakthroughItem | RecuperationItem | MountItem | FlareItem | CraftingTechniqueItem | EnchantmentItem | MysticalKeyItem | CondensationArtItem | FormationItem | PillarShardItem | TrophyItem | BlueprintItem | TokenItem | UpgradeItem | CraftingReagentItem | LifeEssenceItem | DeviceItem;
|
|
22
22
|
interface ItemBase {
|
|
23
23
|
kind: ItemKind;
|
|
24
24
|
name: string;
|
|
@@ -32,12 +32,15 @@ interface ItemBase {
|
|
|
32
32
|
enchantment?: Enchantment;
|
|
33
33
|
upgradedFrom?: Item;
|
|
34
34
|
qualityTier?: number;
|
|
35
|
+
hiddenPotential?: number;
|
|
36
|
+
minimumPotential?: number;
|
|
35
37
|
}
|
|
36
38
|
export interface ItemDesc {
|
|
37
39
|
name: string;
|
|
38
40
|
stacks?: number;
|
|
39
41
|
enchantment?: EnchantmentDesc;
|
|
40
42
|
qualityTier?: number;
|
|
43
|
+
hiddenPotential?: number;
|
|
41
44
|
}
|
|
42
45
|
export type TechniqueItemKind = 'technique' | 'crystal' | 'shard' | 'enhance';
|
|
43
46
|
export interface BaseTechniqueItem extends ItemBase {
|
|
@@ -67,6 +70,15 @@ export interface TreasureItem extends ItemBase {
|
|
|
67
70
|
kind: 'treasure';
|
|
68
71
|
isCollectible?: boolean;
|
|
69
72
|
}
|
|
73
|
+
export interface DeviceItem extends ItemBase {
|
|
74
|
+
kind: 'device';
|
|
75
|
+
deviceEffects: Array<{
|
|
76
|
+
type: 'harvester' | 'growthBoost' | 'yieldBoost' | 'universalSoil';
|
|
77
|
+
harvestInterval?: number;
|
|
78
|
+
boostAmount?: number;
|
|
79
|
+
soilConditions?: string[];
|
|
80
|
+
}>;
|
|
81
|
+
}
|
|
70
82
|
export interface CraftingItem extends ItemBase {
|
|
71
83
|
kind: 'material';
|
|
72
84
|
}
|
|
@@ -346,16 +358,12 @@ export interface CondensationArtEnchantment extends Enchantment {
|
|
|
346
358
|
speed?: number;
|
|
347
359
|
restoredDroplets?: number;
|
|
348
360
|
}
|
|
349
|
-
export type FormationKind = '
|
|
350
|
-
export type FormationItem =
|
|
361
|
+
export type FormationKind = 'qiDensity';
|
|
362
|
+
export type FormationItem = QiDensityFormationItem;
|
|
351
363
|
interface FormationItemBase extends ItemBase {
|
|
352
364
|
kind: 'formation';
|
|
353
365
|
subkind: FormationKind;
|
|
354
366
|
}
|
|
355
|
-
export interface HerbFieldFormationItem extends FormationItemBase {
|
|
356
|
-
subkind: 'herbField';
|
|
357
|
-
speed: number;
|
|
358
|
-
}
|
|
359
367
|
export interface QiDensityFormationItem extends FormationItemBase {
|
|
360
368
|
subkind: 'qiDensity';
|
|
361
369
|
qi: number;
|
|
@@ -416,4 +424,12 @@ export interface UncutStonePool {
|
|
|
416
424
|
fallback: Item[];
|
|
417
425
|
items: Item[];
|
|
418
426
|
}
|
|
427
|
+
export interface LifeEssenceItem extends ItemBase {
|
|
428
|
+
kind: 'life_essence';
|
|
429
|
+
thresholds: {
|
|
430
|
+
level: number;
|
|
431
|
+
buffs: Buff[];
|
|
432
|
+
techniques: Technique[];
|
|
433
|
+
}[];
|
|
434
|
+
}
|
|
419
435
|
export {};
|
package/dist/item.js
CHANGED
|
@@ -29,6 +29,8 @@ export const itemKinds = [
|
|
|
29
29
|
'trophy',
|
|
30
30
|
'treasure',
|
|
31
31
|
'token',
|
|
32
|
+
'life_essence',
|
|
33
|
+
'device',
|
|
32
34
|
];
|
|
33
35
|
export const buyItemCostMap = {
|
|
34
36
|
technique: 3000,
|
|
@@ -61,6 +63,8 @@ export const buyItemCostMap = {
|
|
|
61
63
|
token: 500,
|
|
62
64
|
upgrade: 4000,
|
|
63
65
|
reagent: 500,
|
|
66
|
+
life_essence: 5000,
|
|
67
|
+
device: 2500,
|
|
64
68
|
};
|
|
65
69
|
export const sellItemCostMap = {
|
|
66
70
|
technique: 400,
|
|
@@ -93,4 +97,6 @@ export const sellItemCostMap = {
|
|
|
93
97
|
token: 0,
|
|
94
98
|
upgrade: 1000,
|
|
95
99
|
reagent: 150,
|
|
100
|
+
life_essence: 1000,
|
|
101
|
+
device: 600,
|
|
96
102
|
};
|
package/dist/itemHarmonyType.js
CHANGED
|
@@ -20,6 +20,7 @@ export const itemTypeToHarmonyType = {
|
|
|
20
20
|
pillar_shard: 'resonance',
|
|
21
21
|
flare: 'resonance',
|
|
22
22
|
material: 'resonance',
|
|
23
|
+
device: 'resonance',
|
|
23
24
|
// Non craftable stuff
|
|
24
25
|
formation: 'forge',
|
|
25
26
|
recipe: 'forge',
|
|
@@ -34,4 +35,5 @@ export const itemTypeToHarmonyType = {
|
|
|
34
35
|
treasure: 'forge',
|
|
35
36
|
token: 'forge',
|
|
36
37
|
upgrade: 'forge',
|
|
38
|
+
life_essence: 'resonance',
|
|
37
39
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type KeybindingCategory = 'general' | 'navigation' | 'ui' | 'world' | 'combat' | 'crafting' | 'dialogs' | 'gamepad';
|
|
2
|
+
export type KeybindingAction = 'confirm' | 'cancel' | 'pause' | 'alternateConfirm' | 'moveUp' | 'moveDown' | 'moveLeft' | 'moveRight' | 'openInventory' | 'openQuests' | 'openCharacterStats' | 'openTechniques' | 'openCalendar' | 'openWorldMap' | 'combatSelectStance0' | 'combatSelectStance1' | 'combatSelectStance2' | 'combatSelectStance3' | 'combatSelectStance4' | 'combatSelectStance5' | 'combatSelectStance6' | 'combatSelectStance7' | 'combatSelectStance8' | 'combatSelectStance9' | 'combatToggleSpeed' | 'combatToggleLog' | 'combatShowStats' | 'combatAutoBattle' | 'craftingAction1' | 'craftingAction2' | 'craftingAction3' | 'craftingAction4' | 'craftingAction5' | 'craftingAction6' | 'craftingAction7' | 'craftingAction8' | 'craftingAction9' | 'craftingAction10' | 'dialogChoice1' | 'dialogChoice2' | 'dialogChoice3' | 'dialogChoice4' | 'dialogChoice5' | 'dialogChoice6' | 'dialogChoice7' | 'dialogChoice8' | 'dialogChoice9' | 'gamepadConfirm' | 'gamepadCancel' | 'gamepadUp' | 'gamepadDown' | 'gamepadLeft' | 'gamepadRight';
|
|
3
|
+
export interface KeybindingDefinition {
|
|
4
|
+
action: KeybindingAction;
|
|
5
|
+
category: KeybindingCategory;
|
|
6
|
+
displayName: string;
|
|
7
|
+
description: string;
|
|
8
|
+
defaultKey: string;
|
|
9
|
+
allowRebind: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type KeybindingsMap = Record<KeybindingAction, string>;
|
|
12
|
+
export declare const keybindingDefinitions: KeybindingDefinition[];
|
|
13
|
+
export declare const keybindingCategoryInfo: Record<KeybindingCategory, {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const defaultKeybindings: KeybindingsMap;
|
|
18
|
+
export declare function getKeyDisplayName(key: string): string;
|
|
19
|
+
export declare function isKeyAllowed(key: string): boolean;
|
|
20
|
+
export declare function getKeybindingsByCategory(category: KeybindingCategory): KeybindingDefinition[];
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
// Complete keybinding definitions with metadata
|
|
2
|
+
export const keybindingDefinitions = [
|
|
3
|
+
// General
|
|
4
|
+
{
|
|
5
|
+
action: 'confirm',
|
|
6
|
+
category: 'general',
|
|
7
|
+
displayName: 'Confirm',
|
|
8
|
+
description: 'Confirm selection or advance dialog',
|
|
9
|
+
defaultKey: 'Enter',
|
|
10
|
+
allowRebind: true,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
action: 'alternateConfirm',
|
|
14
|
+
category: 'general',
|
|
15
|
+
displayName: 'Alternate Confirm',
|
|
16
|
+
description: 'Alternative confirm button (Space also works as Enter)',
|
|
17
|
+
defaultKey: ' ',
|
|
18
|
+
allowRebind: true,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
action: 'cancel',
|
|
22
|
+
category: 'general',
|
|
23
|
+
displayName: 'Cancel / Back',
|
|
24
|
+
description: 'Cancel action or close dialog',
|
|
25
|
+
defaultKey: 'Escape',
|
|
26
|
+
allowRebind: true,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
action: 'pause',
|
|
30
|
+
category: 'general',
|
|
31
|
+
displayName: 'Pause/Menu',
|
|
32
|
+
description: 'Open pause menu or settings (not rebindable)',
|
|
33
|
+
defaultKey: 'Escape',
|
|
34
|
+
allowRebind: false,
|
|
35
|
+
},
|
|
36
|
+
// Navigation
|
|
37
|
+
{
|
|
38
|
+
action: 'moveUp',
|
|
39
|
+
category: 'navigation',
|
|
40
|
+
displayName: 'Navigate Up',
|
|
41
|
+
description: 'Move selection up or scroll up',
|
|
42
|
+
defaultKey: 'ArrowUp',
|
|
43
|
+
allowRebind: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
action: 'moveDown',
|
|
47
|
+
category: 'navigation',
|
|
48
|
+
displayName: 'Navigate Down',
|
|
49
|
+
description: 'Move selection down or scroll down',
|
|
50
|
+
defaultKey: 'ArrowDown',
|
|
51
|
+
allowRebind: true,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
action: 'moveLeft',
|
|
55
|
+
category: 'navigation',
|
|
56
|
+
displayName: 'Navigate Left',
|
|
57
|
+
description: 'Move selection left or previous tab',
|
|
58
|
+
defaultKey: 'ArrowLeft',
|
|
59
|
+
allowRebind: true,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
action: 'moveRight',
|
|
63
|
+
category: 'navigation',
|
|
64
|
+
displayName: 'Navigate Right',
|
|
65
|
+
description: 'Move selection right or next tab',
|
|
66
|
+
defaultKey: 'ArrowRight',
|
|
67
|
+
allowRebind: true,
|
|
68
|
+
},
|
|
69
|
+
// UI Shortcuts
|
|
70
|
+
{
|
|
71
|
+
action: 'openInventory',
|
|
72
|
+
category: 'ui',
|
|
73
|
+
displayName: 'Open Inventory',
|
|
74
|
+
description: 'Open the inventory panel',
|
|
75
|
+
defaultKey: 'i',
|
|
76
|
+
allowRebind: true,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
action: 'openQuests',
|
|
80
|
+
category: 'ui',
|
|
81
|
+
displayName: 'Open Quests',
|
|
82
|
+
description: 'Open the quests panel',
|
|
83
|
+
defaultKey: 'q',
|
|
84
|
+
allowRebind: true,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
action: 'openCharacterStats',
|
|
88
|
+
category: 'ui',
|
|
89
|
+
displayName: 'Open Character Stats',
|
|
90
|
+
description: 'Open the character statistics panel',
|
|
91
|
+
defaultKey: 'c',
|
|
92
|
+
allowRebind: true,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
action: 'openTechniques',
|
|
96
|
+
category: 'ui',
|
|
97
|
+
displayName: 'Open Techniques',
|
|
98
|
+
description: 'Open the techniques/stances panel',
|
|
99
|
+
defaultKey: 's',
|
|
100
|
+
allowRebind: true,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
action: 'openCalendar',
|
|
104
|
+
category: 'ui',
|
|
105
|
+
displayName: 'Open Calendar',
|
|
106
|
+
description: 'Open the calendar panel',
|
|
107
|
+
defaultKey: 'm',
|
|
108
|
+
allowRebind: true,
|
|
109
|
+
},
|
|
110
|
+
// World
|
|
111
|
+
{
|
|
112
|
+
action: 'openWorldMap',
|
|
113
|
+
category: 'world',
|
|
114
|
+
displayName: 'Open World Map',
|
|
115
|
+
description: 'Open world map for travel from location screen',
|
|
116
|
+
defaultKey: 't',
|
|
117
|
+
allowRebind: true,
|
|
118
|
+
},
|
|
119
|
+
// Combat Actions
|
|
120
|
+
{
|
|
121
|
+
action: 'combatSelectStance0',
|
|
122
|
+
category: 'combat',
|
|
123
|
+
displayName: 'Select Stance 0',
|
|
124
|
+
description: 'Select stance at position 0 (current/repeat)',
|
|
125
|
+
defaultKey: '0',
|
|
126
|
+
allowRebind: true,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
action: 'combatAutoBattle',
|
|
130
|
+
category: 'combat',
|
|
131
|
+
displayName: 'Toggle Auto Battle',
|
|
132
|
+
description: 'Enable or disable auto battle mode',
|
|
133
|
+
defaultKey: 'b',
|
|
134
|
+
allowRebind: true,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
action: 'combatSelectStance1',
|
|
138
|
+
category: 'combat',
|
|
139
|
+
displayName: 'Select Stance 1',
|
|
140
|
+
description: 'Select first saved stance',
|
|
141
|
+
defaultKey: '1',
|
|
142
|
+
allowRebind: true,
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
action: 'combatSelectStance2',
|
|
146
|
+
category: 'combat',
|
|
147
|
+
displayName: 'Select Stance 2',
|
|
148
|
+
description: 'Select second saved stance',
|
|
149
|
+
defaultKey: '2',
|
|
150
|
+
allowRebind: true,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
action: 'combatSelectStance3',
|
|
154
|
+
category: 'combat',
|
|
155
|
+
displayName: 'Select Stance 3',
|
|
156
|
+
description: 'Select third saved stance',
|
|
157
|
+
defaultKey: '3',
|
|
158
|
+
allowRebind: true,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
action: 'combatSelectStance4',
|
|
162
|
+
category: 'combat',
|
|
163
|
+
displayName: 'Select Stance 4',
|
|
164
|
+
description: 'Select fourth saved stance',
|
|
165
|
+
defaultKey: '4',
|
|
166
|
+
allowRebind: true,
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
action: 'combatSelectStance5',
|
|
170
|
+
category: 'combat',
|
|
171
|
+
displayName: 'Select Stance 5',
|
|
172
|
+
description: 'Select fifth saved stance',
|
|
173
|
+
defaultKey: '5',
|
|
174
|
+
allowRebind: true,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
action: 'combatSelectStance6',
|
|
178
|
+
category: 'combat',
|
|
179
|
+
displayName: 'Select Stance 6',
|
|
180
|
+
description: 'Select sixth saved stance',
|
|
181
|
+
defaultKey: '6',
|
|
182
|
+
allowRebind: true,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
action: 'combatSelectStance7',
|
|
186
|
+
category: 'combat',
|
|
187
|
+
displayName: 'Select Stance 7',
|
|
188
|
+
description: 'Select seventh saved stance',
|
|
189
|
+
defaultKey: '7',
|
|
190
|
+
allowRebind: true,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
action: 'combatSelectStance8',
|
|
194
|
+
category: 'combat',
|
|
195
|
+
displayName: 'Select Stance 8',
|
|
196
|
+
description: 'Select eighth saved stance',
|
|
197
|
+
defaultKey: '8',
|
|
198
|
+
allowRebind: true,
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
action: 'combatSelectStance9',
|
|
202
|
+
category: 'combat',
|
|
203
|
+
displayName: 'Select Stance 9',
|
|
204
|
+
description: 'Select ninth saved stance',
|
|
205
|
+
defaultKey: '9',
|
|
206
|
+
allowRebind: true,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
action: 'combatToggleSpeed',
|
|
210
|
+
category: 'combat',
|
|
211
|
+
displayName: 'Toggle Combat Speed',
|
|
212
|
+
description: 'Toggle between Manual and Instant combat speed',
|
|
213
|
+
defaultKey: 'm',
|
|
214
|
+
allowRebind: true,
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
action: 'combatToggleLog',
|
|
218
|
+
category: 'combat',
|
|
219
|
+
displayName: 'Toggle Combat Log',
|
|
220
|
+
description: 'Show/hide the combat log',
|
|
221
|
+
defaultKey: 'l',
|
|
222
|
+
allowRebind: true,
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
action: 'combatShowStats',
|
|
226
|
+
category: 'combat',
|
|
227
|
+
displayName: 'Show Current Stats',
|
|
228
|
+
description: 'Show detailed combat statistics',
|
|
229
|
+
defaultKey: 's',
|
|
230
|
+
allowRebind: true,
|
|
231
|
+
},
|
|
232
|
+
// Crafting Actions (Number keys 1-9, then 0)
|
|
233
|
+
{
|
|
234
|
+
action: 'craftingAction1',
|
|
235
|
+
category: 'crafting',
|
|
236
|
+
displayName: 'Crafting Action 1',
|
|
237
|
+
description: 'Execute first crafting technique',
|
|
238
|
+
defaultKey: '1',
|
|
239
|
+
allowRebind: true,
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
action: 'craftingAction2',
|
|
243
|
+
category: 'crafting',
|
|
244
|
+
displayName: 'Crafting Action 2',
|
|
245
|
+
description: 'Execute second crafting technique',
|
|
246
|
+
defaultKey: '2',
|
|
247
|
+
allowRebind: true,
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
action: 'craftingAction3',
|
|
251
|
+
category: 'crafting',
|
|
252
|
+
displayName: 'Crafting Action 3',
|
|
253
|
+
description: 'Execute third crafting technique',
|
|
254
|
+
defaultKey: '3',
|
|
255
|
+
allowRebind: true,
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
action: 'craftingAction4',
|
|
259
|
+
category: 'crafting',
|
|
260
|
+
displayName: 'Crafting Action 4',
|
|
261
|
+
description: 'Execute fourth crafting technique',
|
|
262
|
+
defaultKey: '4',
|
|
263
|
+
allowRebind: true,
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
action: 'craftingAction5',
|
|
267
|
+
category: 'crafting',
|
|
268
|
+
displayName: 'Crafting Action 5',
|
|
269
|
+
description: 'Execute fifth crafting technique',
|
|
270
|
+
defaultKey: '5',
|
|
271
|
+
allowRebind: true,
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
action: 'craftingAction6',
|
|
275
|
+
category: 'crafting',
|
|
276
|
+
displayName: 'Crafting Action 6',
|
|
277
|
+
description: 'Execute sixth crafting technique',
|
|
278
|
+
defaultKey: '6',
|
|
279
|
+
allowRebind: true,
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
action: 'craftingAction7',
|
|
283
|
+
category: 'crafting',
|
|
284
|
+
displayName: 'Crafting Action 7',
|
|
285
|
+
description: 'Execute seventh crafting technique',
|
|
286
|
+
defaultKey: '7',
|
|
287
|
+
allowRebind: true,
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
action: 'craftingAction8',
|
|
291
|
+
category: 'crafting',
|
|
292
|
+
displayName: 'Crafting Action 8',
|
|
293
|
+
description: 'Execute eighth crafting technique',
|
|
294
|
+
defaultKey: '8',
|
|
295
|
+
allowRebind: true,
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
action: 'craftingAction9',
|
|
299
|
+
category: 'crafting',
|
|
300
|
+
displayName: 'Crafting Action 9',
|
|
301
|
+
description: 'Execute ninth crafting technique',
|
|
302
|
+
defaultKey: '9',
|
|
303
|
+
allowRebind: true,
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
action: 'craftingAction10',
|
|
307
|
+
category: 'crafting',
|
|
308
|
+
displayName: 'Crafting Action 10',
|
|
309
|
+
description: 'Execute tenth crafting technique',
|
|
310
|
+
defaultKey: '0',
|
|
311
|
+
allowRebind: true,
|
|
312
|
+
},
|
|
313
|
+
// Dialog Choices (Number keys 1-9)
|
|
314
|
+
{
|
|
315
|
+
action: 'dialogChoice1',
|
|
316
|
+
category: 'dialogs',
|
|
317
|
+
displayName: 'Dialog Choice 1',
|
|
318
|
+
description: 'Select first dialog option',
|
|
319
|
+
defaultKey: '1',
|
|
320
|
+
allowRebind: true,
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
action: 'dialogChoice2',
|
|
324
|
+
category: 'dialogs',
|
|
325
|
+
displayName: 'Dialog Choice 2',
|
|
326
|
+
description: 'Select second dialog option',
|
|
327
|
+
defaultKey: '2',
|
|
328
|
+
allowRebind: true,
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
action: 'dialogChoice3',
|
|
332
|
+
category: 'dialogs',
|
|
333
|
+
displayName: 'Dialog Choice 3',
|
|
334
|
+
description: 'Select third dialog option',
|
|
335
|
+
defaultKey: '3',
|
|
336
|
+
allowRebind: true,
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
action: 'dialogChoice4',
|
|
340
|
+
category: 'dialogs',
|
|
341
|
+
displayName: 'Dialog Choice 4',
|
|
342
|
+
description: 'Select fourth dialog option',
|
|
343
|
+
defaultKey: '4',
|
|
344
|
+
allowRebind: true,
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
action: 'dialogChoice5',
|
|
348
|
+
category: 'dialogs',
|
|
349
|
+
displayName: 'Dialog Choice 5',
|
|
350
|
+
description: 'Select fifth dialog option',
|
|
351
|
+
defaultKey: '5',
|
|
352
|
+
allowRebind: true,
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
action: 'dialogChoice6',
|
|
356
|
+
category: 'dialogs',
|
|
357
|
+
displayName: 'Dialog Choice 6',
|
|
358
|
+
description: 'Select sixth dialog option',
|
|
359
|
+
defaultKey: '6',
|
|
360
|
+
allowRebind: true,
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
action: 'dialogChoice7',
|
|
364
|
+
category: 'dialogs',
|
|
365
|
+
displayName: 'Dialog Choice 7',
|
|
366
|
+
description: 'Select seventh dialog option',
|
|
367
|
+
defaultKey: '7',
|
|
368
|
+
allowRebind: true,
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
action: 'dialogChoice8',
|
|
372
|
+
category: 'dialogs',
|
|
373
|
+
displayName: 'Dialog Choice 8',
|
|
374
|
+
description: 'Select eighth dialog option',
|
|
375
|
+
defaultKey: '8',
|
|
376
|
+
allowRebind: true,
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
action: 'dialogChoice9',
|
|
380
|
+
category: 'dialogs',
|
|
381
|
+
displayName: 'Dialog Choice 9',
|
|
382
|
+
description: 'Select ninth dialog option',
|
|
383
|
+
defaultKey: '9',
|
|
384
|
+
allowRebind: true,
|
|
385
|
+
},
|
|
386
|
+
// Gamepad (not rebindable as they map to physical buttons)
|
|
387
|
+
{
|
|
388
|
+
action: 'gamepadConfirm',
|
|
389
|
+
category: 'gamepad',
|
|
390
|
+
displayName: 'Gamepad A Button',
|
|
391
|
+
description: 'Gamepad confirmation button (maps to Enter)',
|
|
392
|
+
defaultKey: 'Enter',
|
|
393
|
+
allowRebind: false,
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
action: 'gamepadCancel',
|
|
397
|
+
category: 'gamepad',
|
|
398
|
+
displayName: 'Gamepad B Button',
|
|
399
|
+
description: 'Gamepad cancel button (maps to Escape)',
|
|
400
|
+
defaultKey: 'Escape',
|
|
401
|
+
allowRebind: false,
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
action: 'gamepadUp',
|
|
405
|
+
category: 'gamepad',
|
|
406
|
+
displayName: 'Gamepad D-Pad Up',
|
|
407
|
+
description: 'Gamepad up direction (maps to Arrow Up)',
|
|
408
|
+
defaultKey: 'ArrowUp',
|
|
409
|
+
allowRebind: false,
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
action: 'gamepadDown',
|
|
413
|
+
category: 'gamepad',
|
|
414
|
+
displayName: 'Gamepad D-Pad Down',
|
|
415
|
+
description: 'Gamepad down direction (maps to Arrow Down)',
|
|
416
|
+
defaultKey: 'ArrowDown',
|
|
417
|
+
allowRebind: false,
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
action: 'gamepadLeft',
|
|
421
|
+
category: 'gamepad',
|
|
422
|
+
displayName: 'Gamepad D-Pad Left',
|
|
423
|
+
description: 'Gamepad left direction (maps to Arrow Left)',
|
|
424
|
+
defaultKey: 'ArrowLeft',
|
|
425
|
+
allowRebind: false,
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
action: 'gamepadRight',
|
|
429
|
+
category: 'gamepad',
|
|
430
|
+
displayName: 'Gamepad D-Pad Right',
|
|
431
|
+
description: 'Gamepad right direction (maps to Arrow Right)',
|
|
432
|
+
defaultKey: 'ArrowRight',
|
|
433
|
+
allowRebind: false,
|
|
434
|
+
},
|
|
435
|
+
];
|
|
436
|
+
// Category display names and descriptions
|
|
437
|
+
export const keybindingCategoryInfo = {
|
|
438
|
+
general: {
|
|
439
|
+
name: 'General',
|
|
440
|
+
description: 'Common actions used throughout the game',
|
|
441
|
+
},
|
|
442
|
+
navigation: {
|
|
443
|
+
name: 'Navigation',
|
|
444
|
+
description: 'Movement and menu navigation controls',
|
|
445
|
+
},
|
|
446
|
+
ui: {
|
|
447
|
+
name: 'UI Shortcuts',
|
|
448
|
+
description: 'Quick access to game panels and menus',
|
|
449
|
+
},
|
|
450
|
+
world: {
|
|
451
|
+
name: 'World',
|
|
452
|
+
description: 'World map and location actions',
|
|
453
|
+
},
|
|
454
|
+
combat: {
|
|
455
|
+
name: 'Combat',
|
|
456
|
+
description: 'Combat-specific actions including stance selection',
|
|
457
|
+
},
|
|
458
|
+
crafting: {
|
|
459
|
+
name: 'Crafting',
|
|
460
|
+
description: 'Crafting technique hotkeys (visible on crafting screen)',
|
|
461
|
+
},
|
|
462
|
+
dialogs: {
|
|
463
|
+
name: 'Dialogs & Events',
|
|
464
|
+
description: 'Dialog choice hotkeys (visible on event screens)',
|
|
465
|
+
},
|
|
466
|
+
gamepad: {
|
|
467
|
+
name: 'Gamepad',
|
|
468
|
+
description: 'Gamepad button mappings (not rebindable)',
|
|
469
|
+
},
|
|
470
|
+
};
|
|
471
|
+
// Default keybindings
|
|
472
|
+
export const defaultKeybindings = Object.fromEntries(keybindingDefinitions.map((def) => [def.action, def.defaultKey]));
|
|
473
|
+
// Helper to get display name for a key
|
|
474
|
+
export function getKeyDisplayName(key) {
|
|
475
|
+
const keyDisplayNames = {
|
|
476
|
+
Enter: 'Enter',
|
|
477
|
+
Escape: 'Esc',
|
|
478
|
+
' ': 'Space',
|
|
479
|
+
ArrowUp: '↑',
|
|
480
|
+
ArrowDown: '↓',
|
|
481
|
+
ArrowLeft: '←',
|
|
482
|
+
ArrowRight: '→',
|
|
483
|
+
Tab: 'Tab',
|
|
484
|
+
Shift: 'Shift',
|
|
485
|
+
Control: 'Ctrl',
|
|
486
|
+
Alt: 'Alt',
|
|
487
|
+
Backspace: 'Backspace',
|
|
488
|
+
Delete: 'Delete',
|
|
489
|
+
Home: 'Home',
|
|
490
|
+
End: 'End',
|
|
491
|
+
PageUp: 'PgUp',
|
|
492
|
+
PageDown: 'PgDn',
|
|
493
|
+
};
|
|
494
|
+
return keyDisplayNames[key] || (key === null || key === void 0 ? void 0 : key.toUpperCase());
|
|
495
|
+
}
|
|
496
|
+
// Validate if a key is allowed for binding
|
|
497
|
+
export function isKeyAllowed(key) {
|
|
498
|
+
const disallowedKeys = [
|
|
499
|
+
'F5', // Refresh
|
|
500
|
+
'F11', // Fullscreen
|
|
501
|
+
'F12', // Dev tools
|
|
502
|
+
'Meta', // Windows/Cmd key
|
|
503
|
+
];
|
|
504
|
+
return !disallowedKeys.includes(key);
|
|
505
|
+
}
|
|
506
|
+
// Get all keybindings by category
|
|
507
|
+
export function getKeybindingsByCategory(category) {
|
|
508
|
+
return keybindingDefinitions.filter((def) => def.category === category);
|
|
509
|
+
}
|
package/dist/life.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Buff } from './buff';
|
|
2
|
+
import { StoredStance, StoredStyle } from './entity';
|
|
3
|
+
import { Realm } from './realm';
|
|
4
|
+
import { PhysicalStatistic } from './stat';
|
|
5
|
+
import { Technique } from './technique';
|
|
6
|
+
export interface LifeForm {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
portrait: string;
|
|
10
|
+
image: string;
|
|
11
|
+
realm: Realm;
|
|
12
|
+
baseStats: Record<PhysicalStatistic, number>;
|
|
13
|
+
buffs: Buff[];
|
|
14
|
+
techniques: Technique[];
|
|
15
|
+
evolutions: {
|
|
16
|
+
essenceCost: {
|
|
17
|
+
essence: string;
|
|
18
|
+
amount: number;
|
|
19
|
+
}[];
|
|
20
|
+
unlockCondition: {
|
|
21
|
+
hint: string;
|
|
22
|
+
isComplete: string;
|
|
23
|
+
};
|
|
24
|
+
nextForm: LifeForm;
|
|
25
|
+
}[];
|
|
26
|
+
}
|
|
27
|
+
export interface LifeFormEntity {
|
|
28
|
+
baseForm: string;
|
|
29
|
+
essences: string[];
|
|
30
|
+
stances: StoredStance[];
|
|
31
|
+
currentStyle?: StoredStyle;
|
|
32
|
+
storedStyles?: StoredStyle[];
|
|
33
|
+
qiDroplets?: number;
|
|
34
|
+
hp: number;
|
|
35
|
+
evolutionTracking: Record<string, number>;
|
|
36
|
+
}
|
package/dist/life.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/location.d.ts
CHANGED
|
@@ -85,8 +85,8 @@ export interface CraftingMission {
|
|
|
85
85
|
condition: string;
|
|
86
86
|
}
|
|
87
87
|
export declare const exploresPerUnlock = 3;
|
|
88
|
-
export type BuildingType = 'cultivation' | 'manual' | 'crafting' | 'mission' | 'craftingHall' | 'healer' | 'market' | 'favourExchange' | 'vault' | 'custom' | 'herbField' | 'mine' | 'recipe' | 'requestBoard' | 'compendium' | 'mysticalRegion' | 'trainingGround' | 'library' | 'house' | 'altar' | 'research' | 'guild' | 'modBuilding';
|
|
89
|
-
export type LocationBuilding = CultivationBuilding | ManualBuilding | CraftingBuilding | MissionBuilding | CraftingHallBuilding | HealerBuilding | MarketBuilding | VaultBuilding | FavourExchangeBuilding | CustomBuilding | HerbFieldBuilding | MineBuilding | RecipeLibraryBuilding | RequestBoardBuilding | CompendiumBuilding | MysticalRegionBuilding | TrainingGroundBuilding | LibraryBuilding | HouseBuilding | CompressionAltarBuilding | ResearchBuilding | GuildBuilding | ModBuilding;
|
|
88
|
+
export type BuildingType = 'cultivation' | 'manual' | 'crafting' | 'mission' | 'craftingHall' | 'healer' | 'market' | 'favourExchange' | 'vault' | 'custom' | 'herbField' | 'mine' | 'recipe' | 'requestBoard' | 'compendium' | 'mysticalRegion' | 'trainingGround' | 'library' | 'house' | 'altar' | 'research' | 'reforge' | 'guild' | 'modBuilding';
|
|
89
|
+
export type LocationBuilding = CultivationBuilding | ManualBuilding | CraftingBuilding | MissionBuilding | CraftingHallBuilding | HealerBuilding | MarketBuilding | VaultBuilding | FavourExchangeBuilding | CustomBuilding | HerbFieldBuilding | MineBuilding | RecipeLibraryBuilding | RequestBoardBuilding | CompendiumBuilding | MysticalRegionBuilding | TrainingGroundBuilding | LibraryBuilding | HouseBuilding | CompressionAltarBuilding | ResearchBuilding | ReforgeBuilding | GuildBuilding | ModBuilding;
|
|
90
90
|
export type LocationBuildingState = MissionBuildingState | CraftingHallBuildingState | ShopBuildingState | RequestBoardBuildingState | HouseBuildingState | CompressionAltarBuildingState;
|
|
91
91
|
interface BuildingBase {
|
|
92
92
|
kind: BuildingType;
|
|
@@ -111,6 +111,9 @@ export interface CompressionAltarBuildingState {
|
|
|
111
111
|
export interface ResearchBuilding extends BuildingBase {
|
|
112
112
|
kind: 'research';
|
|
113
113
|
}
|
|
114
|
+
export interface ReforgeBuilding extends BuildingBase {
|
|
115
|
+
kind: 'reforge';
|
|
116
|
+
}
|
|
114
117
|
export interface ManualBuilding extends BuildingBase {
|
|
115
118
|
kind: 'manual';
|
|
116
119
|
}
|
package/dist/location.js
CHANGED
package/dist/reduxState.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ import { CharacterState } from './character';
|
|
|
8
8
|
import { QuestProgressState } from './quest';
|
|
9
9
|
import { LocationBuildingState } from './location';
|
|
10
10
|
import { Auction, Speech, AuctionItem } from './auction';
|
|
11
|
-
import { Crop } from './herbField';
|
|
12
11
|
import { MineTile, UncutStone, CuttingParticipant } from './mine';
|
|
13
12
|
import { TournamentRound } from './tournament';
|
|
14
13
|
import { IntimateStat, IntimateTechniqueType, IntimateTrait, IntimateResource, DualCultivationMessage } from './dualCultivation';
|
|
@@ -37,6 +36,7 @@ export interface InventoryItemState {
|
|
|
37
36
|
stacks: number;
|
|
38
37
|
enchantment?: EnchantmentDesc;
|
|
39
38
|
qualityTier?: number;
|
|
39
|
+
hiddenPotential?: number;
|
|
40
40
|
}
|
|
41
41
|
export interface RecipeState {
|
|
42
42
|
name: string;
|
|
@@ -109,21 +109,12 @@ export interface MonthState {
|
|
|
109
109
|
craftskill: number;
|
|
110
110
|
reputations: Record<string, number>;
|
|
111
111
|
completedEvents: string[];
|
|
112
|
-
field: {
|
|
113
|
-
planted: string[];
|
|
114
|
-
failedToPlant: string[];
|
|
115
|
-
harvested: {
|
|
116
|
-
item: string;
|
|
117
|
-
stacks: number;
|
|
118
|
-
}[];
|
|
119
|
-
};
|
|
120
112
|
analyticsTracking: {
|
|
121
113
|
craftingActionsUsed: Record<string, number>;
|
|
122
114
|
masteryUsed: Record<string, number>;
|
|
123
115
|
stancesUsed: string[][];
|
|
124
116
|
recipeSuccess: Record<'failed' | 'normal' | 'perfect' | 'sublime', number>;
|
|
125
117
|
combat: Record<'victory' | 'defeat', number>;
|
|
126
|
-
cropsPlanted: number;
|
|
127
118
|
flaresSpent: number;
|
|
128
119
|
schoolUsage?: Record<string, number>;
|
|
129
120
|
techniqueUsage?: Record<string, number>;
|
|
@@ -176,15 +167,32 @@ export interface AuctionState {
|
|
|
176
167
|
}
|
|
177
168
|
export interface BreakthroughSliceState extends BreakthroughState {
|
|
178
169
|
}
|
|
170
|
+
export interface CropReference {
|
|
171
|
+
itemName: string;
|
|
172
|
+
realm: Realm;
|
|
173
|
+
}
|
|
179
174
|
export interface LocationHerbFieldState {
|
|
180
|
-
soilCondition: Record<string, number>;
|
|
181
|
-
currentCrop: Crop | undefined;
|
|
182
|
-
currentGrowthDays: number;
|
|
183
|
-
cropQueue: Crop[];
|
|
184
175
|
formation?: string;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
176
|
+
upgradeLevel?: number;
|
|
177
|
+
cropGrid?: {
|
|
178
|
+
x: number;
|
|
179
|
+
y: number;
|
|
180
|
+
crop: {
|
|
181
|
+
cropRef: CropReference;
|
|
182
|
+
growthDays: number;
|
|
183
|
+
infusionCount: number;
|
|
184
|
+
isValid: boolean;
|
|
185
|
+
growthBoost?: number;
|
|
186
|
+
yieldBoost?: number;
|
|
187
|
+
} | undefined;
|
|
188
|
+
device?: {
|
|
189
|
+
item: ItemDesc;
|
|
190
|
+
daysSinceLastHarvest: number;
|
|
191
|
+
storage?: Array<{
|
|
192
|
+
name: string;
|
|
193
|
+
stacks: number;
|
|
194
|
+
}>;
|
|
195
|
+
};
|
|
188
196
|
}[];
|
|
189
197
|
}
|
|
190
198
|
export interface HerbFieldState {
|
|
@@ -287,6 +295,16 @@ export interface NewGameState {
|
|
|
287
295
|
surname: string;
|
|
288
296
|
sex: Sex;
|
|
289
297
|
imageIndex: number;
|
|
298
|
+
customImagePath?: string;
|
|
299
|
+
customImages?: {
|
|
300
|
+
idle?: string;
|
|
301
|
+
hit?: string;
|
|
302
|
+
support?: string;
|
|
303
|
+
defensive?: string;
|
|
304
|
+
utility?: string;
|
|
305
|
+
offensive?: string;
|
|
306
|
+
aggressive?: string;
|
|
307
|
+
};
|
|
290
308
|
birthBackground: Background | undefined;
|
|
291
309
|
childBackground: Background | undefined;
|
|
292
310
|
teenBackground: Background | undefined;
|
package/dist/stat.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { TechniqueElement } from './element';
|
|
|
3
3
|
export declare const physicalStatistics: readonly ["eyes", "meridians", "dantian", "muscles", "digestion", "flesh"];
|
|
4
4
|
export declare const socialStatistics: readonly ["age", "lifespan", "charisma", "battlesense", "craftskill", "artefactslots", "talismanslots", "condenseEfficiency", "pillsPerRound"];
|
|
5
5
|
export declare const craftingStatistics: readonly ["maxpool", "pool", "maxtoxicity", "toxicity", "resistance", "itemEffectiveness", "control", "intensity", "critchance", "critmultiplier", "pillsPerRound", "poolCostPercentage", "stabilityCostPercentage", "successChanceBonus"];
|
|
6
|
-
export declare const combatStatistics: readonly ["maxhp", "hp", "maxbarrier", "barrier", "maxtoxicity", "toxicity", "resistance", "pillsPerRound", "itemEffectiveness", "power", "artefactpower", "critchance", "defense", "dr", "barrierMitigation", "lifesteal", "critdam", "fistBoost", "blossomBoost", "weaponBoost", "cloudBoost", "bloodBoost", "celestialBoost", "fistAffinity", "blossomAffinity", "weaponAffinity", "cloudAffinity", "bloodAffinity", "celestialAffinity", "noneAffinity", "qiDroplets", "fistDisabled", "bloodDisabled", "blossomDisabled", "cloudDisabled", "celestialDisabled", "weaponDisabled", "fistResistance", "blossomResistance", "weaponResistance", "cloudResistance", "bloodResistance", "celestialResistance"];
|
|
6
|
+
export declare const combatStatistics: readonly ["maxhp", "hp", "maxbarrier", "barrier", "maxtoxicity", "toxicity", "resistance", "pillsPerRound", "itemEffectiveness", "power", "artefactpower", "critchance", "defense", "dr", "barrierMitigation", "lifesteal", "critdam", "vulnerability", "fistBoost", "blossomBoost", "weaponBoost", "cloudBoost", "bloodBoost", "celestialBoost", "fistAffinity", "blossomAffinity", "weaponAffinity", "cloudAffinity", "bloodAffinity", "celestialAffinity", "noneAffinity", "qiDroplets", "fistDisabled", "bloodDisabled", "blossomDisabled", "cloudDisabled", "celestialDisabled", "weaponDisabled", "fistResistance", "blossomResistance", "weaponResistance", "cloudResistance", "bloodResistance", "celestialResistance"];
|
|
7
7
|
export type PhysicalStatistic = (typeof physicalStatistics)[number];
|
|
8
8
|
export type SocialStatistic = (typeof socialStatistics)[number];
|
|
9
9
|
export type CraftingStatistic = (typeof craftingStatistics)[number];
|
package/dist/stat.js
CHANGED
|
@@ -51,6 +51,7 @@ export const combatStatistics = [
|
|
|
51
51
|
'barrierMitigation',
|
|
52
52
|
'lifesteal',
|
|
53
53
|
'critdam',
|
|
54
|
+
'vulnerability',
|
|
54
55
|
'fistBoost',
|
|
55
56
|
'blossomBoost',
|
|
56
57
|
'weaponBoost',
|
|
@@ -106,6 +107,7 @@ export const combatStatToName = {
|
|
|
106
107
|
barrierMitigation: 'Barrier Effectiveness',
|
|
107
108
|
lifesteal: 'Life Steal',
|
|
108
109
|
critdam: 'Crit Damage',
|
|
110
|
+
vulnerability: 'Vulnerability',
|
|
109
111
|
fistBoost: 'Fist Boost',
|
|
110
112
|
blossomBoost: 'Blossom Boost',
|
|
111
113
|
weaponBoost: 'Weapon Boost',
|
|
@@ -147,8 +149,9 @@ export const combatStatToDescription = {
|
|
|
147
149
|
defense: 'Your resistance to damage.',
|
|
148
150
|
dr: '',
|
|
149
151
|
lifesteal: '',
|
|
150
|
-
critchance: 'Your chance to get a critical effect, increasing the power of your techniques.',
|
|
152
|
+
critchance: 'Your chance to get a critical effect, increasing the power of your techniques. Crit chance over 100% enables additional crits.',
|
|
151
153
|
critdam: '',
|
|
154
|
+
vulnerability: '',
|
|
152
155
|
artefactpower: "The strength of your artefact's techniques and your Formation Parts.",
|
|
153
156
|
fistBoost: '',
|
|
154
157
|
blossomBoost: '',
|
|
@@ -199,7 +202,7 @@ export const craftingStatToName = {
|
|
|
199
202
|
export const craftingStatToDescription = {
|
|
200
203
|
maxtoxicity: 'The quantity of pills you can take before your body becomes unable to digest any more.',
|
|
201
204
|
toxicity: '',
|
|
202
|
-
critchance: 'Your chance to get a critical effect on increasing perfection
|
|
205
|
+
critchance: 'Your chance to get a critical effect on increasing perfection or completion. Crit chance over 100% enables additional crits',
|
|
203
206
|
maxpool: 'The amount of <b>Qi</b> you have available during crafting to spend on crafting actions.',
|
|
204
207
|
pool: '',
|
|
205
208
|
control: 'The <b>perfection</b> your refinement actions impart during crafting, making it easier to perfect a recipe.',
|
|
@@ -208,7 +211,7 @@ export const craftingStatToDescription = {
|
|
|
208
211
|
pillsPerRound: '',
|
|
209
212
|
resistance: 'Your resistance to the effects of pill toxicity, increasing the number of pills you can digest.',
|
|
210
213
|
poolCostPercentage: '',
|
|
211
|
-
critmultiplier: '',
|
|
214
|
+
critmultiplier: 'The effectiveness of your critical actions.',
|
|
212
215
|
successChanceBonus: '',
|
|
213
216
|
itemEffectiveness: 'The effectiveness of your pills and reagents.',
|
|
214
217
|
};
|
package/dist/technique.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { TechniqueElement } from './element';
|
|
|
4
4
|
import { Rarity } from './rarity';
|
|
5
5
|
import { Realm } from './realm';
|
|
6
6
|
import { Scaling } from './stat';
|
|
7
|
+
export declare const techniquePriorities: readonly ["", "Support", "Defensive", "Utility", "Aggressive", "Offensive"];
|
|
8
|
+
export type TechniquePriority = (typeof techniquePriorities)[number];
|
|
7
9
|
export interface KnownTechniqueMastery {
|
|
8
10
|
name: string;
|
|
9
11
|
tier: Rarity;
|
|
@@ -127,6 +129,7 @@ interface CleanseToxicityTechniqueEffect extends BaseTechniqueEffect {
|
|
|
127
129
|
}
|
|
128
130
|
interface ModifyBuffGroupEffect extends BaseTechniqueEffect {
|
|
129
131
|
kind: 'modifyBuffGroup';
|
|
132
|
+
onTarget?: boolean;
|
|
130
133
|
group: string;
|
|
131
134
|
amount: Scaling;
|
|
132
135
|
}
|
package/dist/technique.js
CHANGED