afnm-types 0.5.15 → 0.6.8

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.
@@ -0,0 +1,2 @@
1
+ export declare const damageTypes: readonly ["true", "corrupt", "disruption"];
2
+ export type DamageType = (typeof damageTypes)[number];
@@ -1 +1 @@
1
- export type GameScreen = 'location' | 'recipe' | 'mission' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research';
1
+ export type GameScreen = 'location' | 'recipe' | 'mission' | 'craftingHall' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'pillarGrid' | 'fallenStar';
@@ -1 +1 @@
1
- export type RecipeDifficulty = 'easy' | 'medium' | 'hard' | 'veryhard' | 'veryhard+';
1
+ export type RecipeDifficulty = 'easy' | 'medium' | 'hard' | 'veryhard' | 'veryhard+' | 'extreme';
@@ -1 +1 @@
1
- export type ScreenEffectType = 'rain' | 'driftingLeaves' | 'mist' | 'smoke' | 'forge' | 'sparkle' | 'dust' | 'sun' | 'bubbles' | 'steam' | 'chromatic';
1
+ export type ScreenEffectType = 'rain' | 'driftingLeaves' | 'mist' | 'smoke' | 'forge' | 'sparkle' | 'dust' | 'sun' | 'bubbles' | 'steam' | 'chromatic' | 'aurora' | 'fireflies' | 'jadeForest' | 'snow';
package/dist/audio.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export declare const ambienceNames: readonly ["HerbField", "Market", "Forge", "SectHall", "Wind", "Crypt", "Forest", "Rain", "BoilingLake", "BoilingLakeSurface", "Field", "Space", "CultivationChamber"];
2
2
  export type AmbienceName = (typeof ambienceNames)[number];
3
- export declare const musicNames: readonly ["Ascending", "Crafting", "Crypt", "Forest", "Herb", "Lake", "Liangtiao", "Mine", "Observatory", "Reststop", "Sect", "Settingoff", "Shenhenda", "Tomb", "Valley", "Combat", "Xidian", "North", "Wastes", "DualCultivation"];
3
+ export declare const musicNames: readonly ["Ascending", "Crafting", "Crypt", "Forest", "Herb", "Lake", "Liangtiao", "Mine", "Observatory", "Reststop", "Sect", "Settingoff", "Shenhenda", "Tomb", "Valley", "Combat", "Xidian", "North", "Wastes", "DualCultivation", "ProgenitorRuGong", "ProgenitorDongTiang", "ProgenitorYingMeihua", "ProgenitorDiaoGian", "ProgenitorTeJinshu", "ProgenitorLuBuLin"];
4
4
  export type MusicName = (typeof musicNames)[number];
5
5
  export declare const soundEffectNames: readonly ["Hit", "Buff", "Debuff", "Heal", "Death", "Fuse", "Refine", "Stabilize", "Equip", "Drink", "Learn", "Crystal", "Eat", "BuySell", "Select", "Confirm", "Hover", "Cancel", "OpenEquip", "PlayerDialogOpen", "CrystalCrack", "CrystalCrackOpen", "CrystalCrackBg", "ChangeTab", "Failed", "MasteryUnveil", "BuildingEnter", "Talk", "Healer", "DialogClose", "BuildingLeave", "SelectItem", "RemoveItem", "BottleneckBreakthrough", "BreakthroughLightning", "Pool", "CraftingBuff", "CraftFail", "CraftSuccess", "PerfectCraft", "TakeItem", "Text", "Speech", "Destiny", "Money", "Favour", "Reputation", "Qi", "Location", "BreakthroughItemSet", "BreakthroughItemRemove", "Footstep", "Fly", "SpawnImpact", "SelectStance", "Plant", "Unplant", "Collect", "Dig", "GrowlBark", "GrowlChirp", "GrowlDeep", "GrowlDrone", "GrowlFrog", "GrowlGrind", "GrowlHigh", "GrowlLoud", "GrowlMinotaur", "GrowlRumble", "GrowlScreech", "GrowlSlow", "GrowlSnuffle", "Satisfaction"];
6
6
  export type SoundEffectName = (typeof soundEffectNames)[number];
@@ -2,7 +2,16 @@ import { ReactNode } from 'react';
2
2
  import { CombatEntity, CraftingEntity, PlayerEntity } from './entity';
3
3
  import { ItemDesc } from './item';
4
4
  import { Realm, RealmProgress } from './realm';
5
- import { PhysicalStatistic, SocialStatistic } from './stat';
5
+ import { PhysicalStatistic, SocialStatistic, Scaling } from './stat';
6
+ import { Buff } from './buff';
7
+ import { CraftingBuff } from './craftingBuff';
8
+ export interface Position {
9
+ x: number;
10
+ y: number;
11
+ }
12
+ export interface PositionAndRotation extends Position {
13
+ rotation: number;
14
+ }
6
15
  export interface BreakthroughState {
7
16
  mundane?: {
8
17
  pill?: string;
@@ -22,6 +31,20 @@ export interface BreakthroughState {
22
31
  coreFormation?: {
23
32
  compressions?: number;
24
33
  };
34
+ pillarCreation?: {
35
+ grid: string[];
36
+ shards: {
37
+ shard: string;
38
+ pos: PositionAndRotation;
39
+ variantIndex?: number;
40
+ }[];
41
+ activatedShards: {
42
+ shardId: string;
43
+ variantIndex?: number;
44
+ position: string;
45
+ }[];
46
+ tilePool?: number;
47
+ };
25
48
  previous: Partial<{
26
49
  [key in Realm]: BreakthroughBase;
27
50
  }>;
@@ -40,6 +63,15 @@ export interface BreakthroughBase {
40
63
  socialStats: Partial<{
41
64
  [key in SocialStatistic]: number;
42
65
  }>;
66
+ combatBuffs?: {
67
+ buff: Buff;
68
+ buffStacks: Scaling;
69
+ }[];
70
+ craftingBuffs?: {
71
+ buff: CraftingBuff;
72
+ buffStacks: Scaling;
73
+ }[];
74
+ dropletRegen?: number;
43
75
  items?: ItemDesc[];
44
76
  }
45
77
  export interface RequirementArgs {
@@ -56,7 +88,26 @@ export interface Breakthrough extends BreakthroughBase {
56
88
  unlocked?: (flags: Record<string, number>, args: RequirementArgs) => boolean;
57
89
  hint?: ReactNode;
58
90
  requirements: ((args: RequirementArgs) => RequirementResult)[];
59
- totalRequirements: number;
91
+ totalRequirements: number | ((args: RequirementArgs) => number);
60
92
  getNumDone: (args: RequirementArgs) => number;
61
93
  extraEffects?: string[];
94
+ dynamicStats?: (args: RequirementArgs) => {
95
+ physicalStats: Partial<{
96
+ [key in PhysicalStatistic]: number;
97
+ }>;
98
+ socialStats: Partial<{
99
+ [key in SocialStatistic]: number;
100
+ }>;
101
+ combatBuffs?: {
102
+ buff: Buff;
103
+ buffStacks: Scaling;
104
+ }[];
105
+ craftingBuffs?: {
106
+ buff: CraftingBuff;
107
+ buffStacks: Scaling;
108
+ }[];
109
+ items?: ItemDesc[];
110
+ dropletRegen?: number;
111
+ extraEffects?: string[];
112
+ };
62
113
  }
package/dist/buff.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { TechniqueElement } from './element';
2
2
  import { CombatStatistic, Scaling } from './stat';
3
+ import { DamageType } from './DamageType';
3
4
  export type TechniqueCondition = ChanceTechniqueCondition | BuffTechniqueCondition | HpTechniqueCondition | ConditionTechniqueCondition;
4
5
  interface ChanceTechniqueCondition {
5
6
  kind: 'chance';
@@ -10,6 +11,7 @@ interface BuffTechniqueCondition {
10
11
  buff: Buff | 'self';
11
12
  count: number;
12
13
  mode: 'more' | 'less' | 'equal';
14
+ hideBuff?: boolean;
13
15
  }
14
16
  interface HpTechniqueCondition {
15
17
  kind: 'hp';
@@ -30,6 +32,8 @@ export interface Buff {
30
32
  tooltip?: string;
31
33
  flag?: string;
32
34
  condition?: TechniqueCondition;
35
+ removeOnConditionFailed?: boolean;
36
+ statsTooltip?: string;
33
37
  stats: Partial<{
34
38
  [key in CombatStatistic]: Scaling;
35
39
  }> | undefined;
@@ -39,6 +43,8 @@ export interface Buff {
39
43
  applicationStats?: Record<CombatStatistic, number>;
40
44
  applicationVariables?: Record<string, number>;
41
45
  type?: TechniqueElement;
46
+ noneType?: string;
47
+ secondaryType?: TechniqueElement | 'origin';
42
48
  enhancement?: number;
43
49
  onTechniqueEffects: BuffEffect[];
44
50
  onRoundEffects: BuffEffect[];
@@ -48,7 +54,7 @@ export interface Buff {
48
54
  buff: Buff;
49
55
  effects: BuffEffect[];
50
56
  cancelApplication: boolean;
51
- };
57
+ }[];
52
58
  triggeredBuffEffects?: {
53
59
  trigger: string;
54
60
  effects: BuffEffect[];
@@ -61,15 +67,18 @@ export interface Buff {
61
67
  stacksAreDays?: boolean;
62
68
  stacksAreMonths?: boolean;
63
69
  buffType?: string;
70
+ buffTypeTooltip?: string;
71
+ endureStatus?: boolean;
72
+ cantUpgrade?: boolean;
64
73
  }
65
- type BuffCombatImage = ScatterCombatImage | ArcCombatImage | FloatingCombatImage | OverlayCombatImage | CompanionCombatImage;
74
+ type BuffCombatImage = ScatterCombatImage | ArcCombatImage | FloatingCombatImage | OverlayCombatImage | CompanionCombatImage | GroundCombatImage | FormationCombatImage;
66
75
  interface BaseCombatImage {
67
76
  image: string;
68
77
  imageOverrides?: {
69
78
  stacks: number;
70
79
  image: string;
71
80
  }[];
72
- position: 'scatter' | 'arc' | 'floating' | 'overlay' | 'companion';
81
+ position: 'scatter' | 'arc' | 'floating' | 'overlay' | 'companion' | 'ground' | 'formation';
73
82
  animations?: ('buff' | 'bump' | 'attack' | 'debuff')[];
74
83
  animateOnEntity?: boolean;
75
84
  }
@@ -105,51 +114,70 @@ export interface OverlayCombatImage extends BaseCombatImage {
105
114
  }
106
115
  export interface CompanionCombatImage extends BaseCombatImage {
107
116
  position: 'companion';
117
+ scale?: number;
118
+ stacksScale?: number;
119
+ }
120
+ export interface GroundCombatImage extends BaseCombatImage {
121
+ position: 'ground';
122
+ scale?: number;
123
+ stacksScale?: number;
124
+ }
125
+ export interface FormationCombatImage extends BaseCombatImage {
126
+ position: 'formation';
127
+ scale?: number;
128
+ showSingleInstance?: boolean;
108
129
  }
109
- export type BuffEffect = DamageEffect | DamageSelfEffect | HealEffect | BarrierEffect | CreateBuffSelfEffect | ConsumeBuffSelfEffect | CreateBuffTargetEffect | ConsumeBuffTargetEffect | NegateEffect | AddEffect | MultiplyEffect | MergeEffect;
130
+ export type BuffEffect = DamageEffect | DamageSelfEffect | HealEffect | BarrierEffect | CreateBuffSelfEffect | ConsumeBuffSelfEffect | CreateBuffTargetEffect | ConsumeBuffTargetEffect | NegateEffect | AddEffect | MultiplyEffect | MergeEffect | TriggerEffect | ModifyBuffGroupEffect | CleanseToxicityEffect;
110
131
  interface BaseBuff {
111
132
  condition?: TechniqueCondition;
133
+ triggerKey?: string;
112
134
  }
113
135
  interface DamageEffect extends BaseBuff {
114
136
  kind: 'damage';
115
137
  amount: Scaling;
116
138
  hits?: Scaling;
139
+ damageType?: DamageType;
117
140
  }
118
141
  interface DamageSelfEffect extends BaseBuff {
119
142
  kind: 'damageSelf';
120
143
  amount: Scaling;
121
- trueDamage?: boolean;
122
- corruptDamage?: boolean;
144
+ damageType?: DamageType;
123
145
  }
124
146
  interface HealEffect extends BaseBuff {
125
147
  kind: 'heal';
126
148
  amount: Scaling;
149
+ hits?: Scaling;
127
150
  }
128
151
  interface BarrierEffect extends BaseBuff {
129
152
  kind: 'barrier';
130
153
  amount: Scaling;
154
+ hits?: Scaling;
131
155
  }
132
156
  interface CreateBuffSelfEffect extends BaseBuff {
133
157
  kind: 'buffSelf';
134
158
  amount: Scaling;
135
159
  buff: Buff;
136
160
  silent?: boolean;
161
+ hideBuff?: boolean;
137
162
  }
138
163
  interface ConsumeBuffSelfEffect extends BaseBuff {
139
164
  kind: 'consumeSelf';
140
165
  amount: Scaling;
141
- buff: Buff;
166
+ buff: Buff | string;
142
167
  silent?: boolean;
168
+ hideBuff?: boolean;
143
169
  }
144
170
  interface CreateBuffTargetEffect extends BaseBuff {
145
171
  kind: 'buffTarget';
146
172
  amount: Scaling;
147
173
  buff: Buff;
174
+ hideBuff?: boolean;
148
175
  }
149
176
  interface ConsumeBuffTargetEffect extends BaseBuff {
150
177
  kind: 'consumeTarget';
151
178
  amount: Scaling;
152
179
  buff: Buff;
180
+ hideBuff?: boolean;
153
181
  }
154
182
  interface NegateEffect extends BaseBuff {
155
183
  kind: 'negate';
@@ -169,4 +197,19 @@ interface MergeEffect extends BaseBuff {
169
197
  targetBuff: Buff;
170
198
  targetStacks: Scaling;
171
199
  }
200
+ interface TriggerEffect extends BaseBuff {
201
+ kind: 'trigger';
202
+ triggerKey: string;
203
+ amount: Scaling;
204
+ triggerTooltip?: string;
205
+ }
206
+ interface CleanseToxicityEffect extends BaseBuff {
207
+ kind: 'cleanseToxicity';
208
+ amount: Scaling;
209
+ }
210
+ interface ModifyBuffGroupEffect extends BaseBuff {
211
+ kind: 'modifyBuffGroup';
212
+ group: string;
213
+ amount: Scaling;
214
+ }
172
215
  export {};
@@ -14,6 +14,7 @@ export interface Character {
14
14
  condition: string;
15
15
  definitions: CharacterDefinition[];
16
16
  relationship?: CharacterRelationshipDefinition[];
17
+ followInteraction?: FollowCharacterDefinition;
17
18
  portrait: string;
18
19
  image: string;
19
20
  imageScale?: number;
@@ -70,6 +71,8 @@ export interface CharacterState {
70
71
  challengeCooldown: number;
71
72
  patrolCooldown: number;
72
73
  followCooldown: number;
74
+ aidBreakthroughCooldown: number;
75
+ dualCultivationCooldown: number;
73
76
  }
74
77
  interface BaseCharacterInteraction {
75
78
  condition: string;
@@ -119,6 +122,9 @@ export interface PatrolCharacterInteraction extends BaseCharacterInteraction {
119
122
  postRepVictorySteps: EventStep[];
120
123
  defeatSteps: EventStep[];
121
124
  }
125
+ export interface AidBreakthroughCharacterInteraction extends BaseCharacterInteraction {
126
+ steps: EventStep[];
127
+ }
122
128
  export interface CustomCharacterInteractionBlock {
123
129
  condition: string;
124
130
  name: string;
@@ -179,6 +185,7 @@ export interface CompanionCharacterDefinition extends BaseCharacterDefinition {
179
185
  craftingInteraction?: CraftingCharacterInteraction[];
180
186
  challengeInteraction?: ChallengeCharacterInteraction[];
181
187
  patrolInteraction?: PatrolCharacterInteraction[];
188
+ aidBreakthroughInteraction?: AidBreakthroughCharacterInteraction[];
182
189
  mount?: MountItem;
183
190
  }
184
191
  export interface CharacterRelationshipDefinition {
@@ -0,0 +1,23 @@
1
+ import { SvgIconTypeMap } from '@mui/material';
2
+ import { OverridableComponent } from '@mui/material/OverridableComponent';
3
+ import { CraftingTechniqueType, CraftingConditionEffect } from './craftingTechnique';
4
+ export declare const craftingTechniqueTypeToName: {
5
+ [key in CraftingTechniqueType]: string;
6
+ };
7
+ export declare const craftingTechniqueTypeToBg: {
8
+ [key in CraftingTechniqueType]: string;
9
+ };
10
+ export type CraftingCondition = 'neutral' | 'positive' | 'negative' | 'veryPositive' | 'veryNegative';
11
+ export declare const craftingConditionToName: Record<CraftingCondition, string>;
12
+ export declare const craftingConditionToColour: Record<CraftingCondition, string>;
13
+ export declare const craftingConditionToIcon: Record<CraftingCondition, OverridableComponent<SvgIconTypeMap<{}, 'svg'>>>;
14
+ export interface RecipeConditionEffect {
15
+ name: string;
16
+ conditionEffects: Record<CraftingCondition, {
17
+ tooltip: string;
18
+ effects: CraftingConditionEffect[];
19
+ }>;
20
+ }
21
+ export type RecipeHarmonyType = 'forge' | 'alchemical' | 'inscription' | 'resonance';
22
+ export declare const harmonyTypeToName: Record<RecipeHarmonyType, string>;
23
+ export declare const harmonyTypeToDescription: Record<RecipeHarmonyType, string>;
@@ -1,5 +1,5 @@
1
1
  import { CraftingStatistic, Scaling } from './stat';
2
- export type CraftingTechniqueCondition = BuffTechniqueCondition | StateTechniqueCondition;
2
+ export type CraftingTechniqueCondition = BuffTechniqueCondition | StateTechniqueCondition | ConditionTechniqueCondition | ChanceTechniqueCondition;
3
3
  interface BuffTechniqueCondition {
4
4
  kind: 'buff';
5
5
  buff: CraftingBuff | 'self';
@@ -7,10 +7,19 @@ interface BuffTechniqueCondition {
7
7
  mode: 'more' | 'less' | 'equal';
8
8
  }
9
9
  interface StateTechniqueCondition {
10
- kind: 'perfection' | 'stability' | 'completion' | 'pool';
10
+ kind: 'perfection' | 'stability' | 'completion' | 'pool' | 'toxicity';
11
11
  percentage: number;
12
12
  mode: 'more' | 'less';
13
13
  }
14
+ interface ConditionTechniqueCondition {
15
+ kind: 'condition';
16
+ condition: string;
17
+ }
18
+ interface ChanceTechniqueCondition {
19
+ kind: 'chance';
20
+ percentage: number;
21
+ }
22
+ export type CraftingBuffDisplayLocation = 'none' | 'avatar' | 'stabilityLeft' | 'stabilityRight' | 'perfectionLeft' | 'perfectionRight' | 'completionLeft' | 'completionRight';
14
23
  export interface CraftingBuff {
15
24
  name: string;
16
25
  icon: string;
@@ -19,18 +28,22 @@ export interface CraftingBuff {
19
28
  stats: Partial<{
20
29
  [key in CraftingStatistic]: Scaling;
21
30
  }> | undefined;
22
- blockCompletion?: boolean;
31
+ maxStacks?: number;
32
+ statsTooltip?: string;
23
33
  tooltip?: string;
24
34
  effects: CraftingBuffEffect[];
25
- onFusion: CraftingBuffEffect[];
26
- onRefine: CraftingBuffEffect[];
35
+ onFusion?: CraftingBuffEffect[];
36
+ onRefine?: CraftingBuffEffect[];
37
+ onStabilize?: CraftingBuffEffect[];
38
+ onSupport?: CraftingBuffEffect[];
27
39
  stacks: number;
28
- displayLocation: 'none' | 'avatar' | 'stabilityLeft' | 'stabilityRight' | 'perfectionLeft' | 'perfectionRight' | 'completionLeft' | 'completionRight';
40
+ displayLocation: CraftingBuffDisplayLocation;
29
41
  baseScaling?: number;
30
42
  stacksScaling?: number;
31
43
  animations?: ('bump' | 'buff' | 'completion' | 'perfection' | 'stabilityup' | 'stabilitydown' | 'pool')[];
44
+ cantUpgrade?: boolean;
32
45
  }
33
- export type CraftingBuffEffect = CompletionEffect | PerfectionEffect | StabilityEffect | PoolEffect | NegateEffect | CreateBuffEffect | AddStackEffect;
46
+ export type CraftingBuffEffect = CompletionEffect | PerfectionEffect | StabilityEffect | PoolEffect | NegateEffect | CreateBuffEffect | AddStackEffect | ChangeToxicityEffect | MaxStabilityEffect;
34
47
  interface BaseEffect {
35
48
  condition?: CraftingTechniqueCondition;
36
49
  }
@@ -46,6 +59,10 @@ interface StabilityEffect extends BaseEffect {
46
59
  kind: 'stability';
47
60
  amount: Scaling;
48
61
  }
62
+ interface MaxStabilityEffect extends BaseEffect {
63
+ kind: 'maxStability';
64
+ amount: Scaling;
65
+ }
49
66
  interface PoolEffect extends BaseEffect {
50
67
  kind: 'pool';
51
68
  amount: Scaling;
@@ -62,4 +79,8 @@ interface AddStackEffect extends BaseEffect {
62
79
  kind: 'addStack';
63
80
  stacks: Scaling;
64
81
  }
82
+ interface ChangeToxicityEffect extends BaseEffect {
83
+ kind: 'changeToxicity';
84
+ amount: Scaling;
85
+ }
65
86
  export {};
@@ -1,20 +1,10 @@
1
1
  import { CraftingBuff, CraftingTechniqueCondition } from './craftingBuff';
2
+ import { Rarity } from './rarity';
2
3
  import { Realm } from './realm';
3
4
  import { Scaling } from './stat';
5
+ import { CraftingCondition, RecipeConditionEffect, RecipeHarmonyType } from './crafting';
4
6
  export declare const craftingTechniqueType: readonly ["fusion", "refine", "stabilize", "support"];
5
7
  export type CraftingTechniqueType = (typeof craftingTechniqueType)[number];
6
- export declare const craftingTechniqueTypeToName: {
7
- [key in CraftingTechniqueType]: string;
8
- };
9
- export declare const craftingTechniqueTypeToBg: {
10
- [key in CraftingTechniqueType]: string;
11
- };
12
- export interface CraftingCondition {
13
- name: string;
14
- tooltip: string;
15
- colour: string;
16
- effects: CraftingConditionEffect[];
17
- }
18
8
  export type CraftingConditionEffect = IntensityConditionEffect | ControlConditionEffect | PoolConditionEffect | StabilityConditionEffect | ChanceConditionEffect;
19
9
  export type IntensityConditionEffect = {
20
10
  kind: 'intensity';
@@ -36,9 +26,13 @@ export type ChanceConditionEffect = {
36
26
  kind: 'chance';
37
27
  bonus: number;
38
28
  };
39
- export interface CraftingConditionSet {
29
+ export interface KnownCraftingTechniqueMastery {
40
30
  name: string;
41
- conditions: CraftingCondition[];
31
+ tier: Rarity;
32
+ }
33
+ export interface KnownCraftingTechnique {
34
+ technique: string;
35
+ mastery?: KnownCraftingTechniqueMastery[];
42
36
  }
43
37
  export interface CraftingTechnique {
44
38
  name: string;
@@ -46,7 +40,8 @@ export interface CraftingTechnique {
46
40
  poolCost: number;
47
41
  toxicityCost?: number;
48
42
  stabilityCost: number;
49
- successChance: string;
43
+ noMaxStabilityLoss?: boolean;
44
+ successChance: number;
50
45
  cooldown: number;
51
46
  buffCost?: {
52
47
  buff: CraftingBuff;
@@ -63,9 +58,16 @@ export interface CraftingTechnique {
63
58
  tooltip?: string;
64
59
  currentCooldown: number;
65
60
  justClicked?: true;
61
+ mastery?: CraftingTechniqueMastery[];
62
+ upgradeMasteries?: {
63
+ [key: string]: CraftingTechniqueMasteryRarityMap;
64
+ };
65
+ upgradeKey?: string;
66
66
  }
67
- export type CraftingTechniqueEffect = CompletionEffect | PerfectionEffect | StabilityEffect | PoolEffect | CreateBuffEffect | ConsumeBuffEffect | CleanseToxicityEffect;
67
+ export type CraftingTechniqueEffectKind = 'completion' | 'perfection' | 'stability' | 'maxStability' | 'pool' | 'createBuff' | 'consumeBuff' | 'cleanseToxicity';
68
+ export type CraftingTechniqueEffect = CompletionEffect | PerfectionEffect | StabilityEffect | PoolEffect | CreateBuffEffect | ConsumeBuffEffect | CleanseToxicityEffect | MaxStabilityEffect;
68
69
  interface BaseCraftingEffect {
70
+ kind: CraftingTechniqueEffectKind;
69
71
  condition?: CraftingTechniqueCondition;
70
72
  }
71
73
  interface CompletionEffect extends BaseCraftingEffect {
@@ -80,6 +82,10 @@ interface StabilityEffect extends BaseCraftingEffect {
80
82
  kind: 'stability';
81
83
  amount: Scaling;
82
84
  }
85
+ interface MaxStabilityEffect extends BaseCraftingEffect {
86
+ kind: 'maxStability';
87
+ amount: Scaling;
88
+ }
83
89
  interface PoolEffect extends BaseCraftingEffect {
84
90
  kind: 'pool';
85
91
  amount: Scaling;
@@ -102,6 +108,68 @@ export interface CraftingRecipeStats {
102
108
  completion: number;
103
109
  perfection: number;
104
110
  stability: number;
105
- conditionSet: CraftingConditionSet;
111
+ conditionType: RecipeConditionEffect;
112
+ harmonyType: RecipeHarmonyType;
113
+ }
114
+ export type CraftingTechniqueMastery = ControlMastery | IntensityMastery | CritChanceTechniqueMastery | CritDamageTechniqueMastery | EffectTechniqueMastery | UpgradeCraftingTechniqueMastery | PoolCostMastery | StabilityCostMastery | SuccessChanceMastery;
115
+ interface BaseCraftingTechniqueMastery {
116
+ condition?: CraftingTechniqueCondition;
117
+ tooltip?: string;
118
+ rarity?: Rarity;
119
+ }
120
+ interface ControlMastery extends BaseCraftingTechniqueMastery {
121
+ kind: 'control';
122
+ percentage: number;
106
123
  }
124
+ interface IntensityMastery extends BaseCraftingTechniqueMastery {
125
+ kind: 'intensity';
126
+ percentage: number;
127
+ }
128
+ interface CritChanceTechniqueMastery extends BaseCraftingTechniqueMastery {
129
+ kind: 'critchance';
130
+ percentage: number;
131
+ }
132
+ interface CritDamageTechniqueMastery extends BaseCraftingTechniqueMastery {
133
+ kind: 'critdam';
134
+ percentage: number;
135
+ }
136
+ interface EffectTechniqueMastery extends BaseCraftingTechniqueMastery {
137
+ kind: 'effect';
138
+ effects: CraftingTechniqueEffect[];
139
+ }
140
+ export interface PoolCostMastery extends BaseCraftingTechniqueMastery {
141
+ kind: 'poolcost';
142
+ change: number;
143
+ }
144
+ export interface StabilityCostMastery extends BaseCraftingTechniqueMastery {
145
+ kind: 'stabilitycost';
146
+ change: number;
147
+ }
148
+ export interface SuccessChanceMastery extends BaseCraftingTechniqueMastery {
149
+ kind: 'successchance';
150
+ change: number;
151
+ }
152
+ export interface UpgradeCraftingTechniqueMastery extends BaseCraftingTechniqueMastery {
153
+ kind: 'upgrade';
154
+ tooltip: string;
155
+ upgradeKey: string;
156
+ change: number;
157
+ shouldMultiply?: boolean;
158
+ }
159
+ export type CraftingTechniqueMasteryRarityMap = {
160
+ [key in Rarity]: CraftingTechniqueMastery | undefined;
161
+ } & {
162
+ rarity: Rarity;
163
+ };
164
+ export type CraftingTechniqueMasteryKindMap = {
165
+ [key in CraftingTechniqueEffectKind]: {
166
+ [key: string]: CraftingTechniqueMasteryRarityMap;
167
+ };
168
+ };
169
+ export type CraftingTechniqueMasteryPool = Omit<{
170
+ [key in Realm]: CraftingTechniqueMasteryKindMap;
171
+ }, 'mundane'>;
172
+ export type CraftingTechniqueMasteryBonusPool = Omit<{
173
+ [key in Realm]: Partial<CraftingTechniqueMasteryKindMap>;
174
+ }, 'mundane'>;
107
175
  export {};
package/dist/element.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Technique } from './technique';
2
1
  export declare const techniqueElements: readonly ["fist", "blossom", "weapon", "cloud", "blood", "celestial", "none"];
3
2
  export type TechniqueElement = (typeof techniqueElements)[number];
4
3
  export declare const elementToName: {
@@ -7,4 +6,9 @@ export declare const elementToName: {
7
6
  export declare const elementToTint: {
8
7
  [key in TechniqueElement]: string;
9
8
  };
10
- export declare const getTechniqueBackground: (technique: Technique) => string;
9
+ export declare const elementToColour: {
10
+ [key in TechniqueElement]: string;
11
+ };
12
+ export declare const elementToColourRaw: {
13
+ [key in TechniqueElement]: string;
14
+ };