afnm-types 0.5.28 → 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.
@@ -1 +1 @@
1
- export type GameScreen = 'location' | 'recipe' | 'mission' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'pillarGrid' | 'fallenStar';
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,9 @@ 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';
6
8
  export interface Position {
7
9
  x: number;
8
10
  y: number;
@@ -34,9 +36,14 @@ export interface BreakthroughState {
34
36
  shards: {
35
37
  shard: string;
36
38
  pos: PositionAndRotation;
39
+ variantIndex?: number;
37
40
  }[];
38
- stats: Record<PhysicalStatistic, number>;
39
- stability: number;
41
+ activatedShards: {
42
+ shardId: string;
43
+ variantIndex?: number;
44
+ position: string;
45
+ }[];
46
+ tilePool?: number;
40
47
  };
41
48
  previous: Partial<{
42
49
  [key in Realm]: BreakthroughBase;
@@ -56,6 +63,15 @@ export interface BreakthroughBase {
56
63
  socialStats: Partial<{
57
64
  [key in SocialStatistic]: number;
58
65
  }>;
66
+ combatBuffs?: {
67
+ buff: Buff;
68
+ buffStacks: Scaling;
69
+ }[];
70
+ craftingBuffs?: {
71
+ buff: CraftingBuff;
72
+ buffStacks: Scaling;
73
+ }[];
74
+ dropletRegen?: number;
59
75
  items?: ItemDesc[];
60
76
  }
61
77
  export interface RequirementArgs {
@@ -72,7 +88,7 @@ export interface Breakthrough extends BreakthroughBase {
72
88
  unlocked?: (flags: Record<string, number>, args: RequirementArgs) => boolean;
73
89
  hint?: ReactNode;
74
90
  requirements: ((args: RequirementArgs) => RequirementResult)[];
75
- totalRequirements: number;
91
+ totalRequirements: number | ((args: RequirementArgs) => number);
76
92
  getNumDone: (args: RequirementArgs) => number;
77
93
  extraEffects?: string[];
78
94
  dynamicStats?: (args: RequirementArgs) => {
@@ -82,7 +98,16 @@ export interface Breakthrough extends BreakthroughBase {
82
98
  socialStats: Partial<{
83
99
  [key in SocialStatistic]: number;
84
100
  }>;
101
+ combatBuffs?: {
102
+ buff: Buff;
103
+ buffStacks: Scaling;
104
+ }[];
105
+ craftingBuffs?: {
106
+ buff: CraftingBuff;
107
+ buffStacks: Scaling;
108
+ }[];
85
109
  items?: ItemDesc[];
110
+ dropletRegen?: number;
86
111
  extraEffects?: string[];
87
112
  };
88
113
  }
package/dist/buff.d.ts CHANGED
@@ -11,6 +11,7 @@ interface BuffTechniqueCondition {
11
11
  buff: Buff | 'self';
12
12
  count: number;
13
13
  mode: 'more' | 'less' | 'equal';
14
+ hideBuff?: boolean;
14
15
  }
15
16
  interface HpTechniqueCondition {
16
17
  kind: 'hp';
@@ -32,6 +33,7 @@ export interface Buff {
32
33
  flag?: string;
33
34
  condition?: TechniqueCondition;
34
35
  removeOnConditionFailed?: boolean;
36
+ statsTooltip?: string;
35
37
  stats: Partial<{
36
38
  [key in CombatStatistic]: Scaling;
37
39
  }> | undefined;
@@ -41,6 +43,8 @@ export interface Buff {
41
43
  applicationStats?: Record<CombatStatistic, number>;
42
44
  applicationVariables?: Record<string, number>;
43
45
  type?: TechniqueElement;
46
+ noneType?: string;
47
+ secondaryType?: TechniqueElement | 'origin';
44
48
  enhancement?: number;
45
49
  onTechniqueEffects: BuffEffect[];
46
50
  onRoundEffects: BuffEffect[];
@@ -64,6 +68,8 @@ export interface Buff {
64
68
  stacksAreMonths?: boolean;
65
69
  buffType?: string;
66
70
  buffTypeTooltip?: string;
71
+ endureStatus?: boolean;
72
+ cantUpgrade?: boolean;
67
73
  }
68
74
  type BuffCombatImage = ScatterCombatImage | ArcCombatImage | FloatingCombatImage | OverlayCombatImage | CompanionCombatImage | GroundCombatImage | FormationCombatImage;
69
75
  interface BaseCombatImage {
@@ -121,7 +127,7 @@ export interface FormationCombatImage extends BaseCombatImage {
121
127
  scale?: number;
122
128
  showSingleInstance?: boolean;
123
129
  }
124
- export type BuffEffect = DamageEffect | DamageSelfEffect | HealEffect | BarrierEffect | CreateBuffSelfEffect | ConsumeBuffSelfEffect | CreateBuffTargetEffect | ConsumeBuffTargetEffect | NegateEffect | AddEffect | MultiplyEffect | MergeEffect | TriggerEffect;
130
+ export type BuffEffect = DamageEffect | DamageSelfEffect | HealEffect | BarrierEffect | CreateBuffSelfEffect | ConsumeBuffSelfEffect | CreateBuffTargetEffect | ConsumeBuffTargetEffect | NegateEffect | AddEffect | MultiplyEffect | MergeEffect | TriggerEffect | ModifyBuffGroupEffect | CleanseToxicityEffect;
125
131
  interface BaseBuff {
126
132
  condition?: TechniqueCondition;
127
133
  triggerKey?: string;
@@ -140,10 +146,12 @@ interface DamageSelfEffect extends BaseBuff {
140
146
  interface HealEffect extends BaseBuff {
141
147
  kind: 'heal';
142
148
  amount: Scaling;
149
+ hits?: Scaling;
143
150
  }
144
151
  interface BarrierEffect extends BaseBuff {
145
152
  kind: 'barrier';
146
153
  amount: Scaling;
154
+ hits?: Scaling;
147
155
  }
148
156
  interface CreateBuffSelfEffect extends BaseBuff {
149
157
  kind: 'buffSelf';
@@ -155,7 +163,7 @@ interface CreateBuffSelfEffect extends BaseBuff {
155
163
  interface ConsumeBuffSelfEffect extends BaseBuff {
156
164
  kind: 'consumeSelf';
157
165
  amount: Scaling;
158
- buff: Buff;
166
+ buff: Buff | string;
159
167
  silent?: boolean;
160
168
  hideBuff?: boolean;
161
169
  }
@@ -195,4 +203,13 @@ interface TriggerEffect extends BaseBuff {
195
203
  amount: Scaling;
196
204
  triggerTooltip?: string;
197
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
+ }
198
215
  export {};
@@ -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/entity.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { SoundEffectName } from './audio';
2
2
  import { Buff } from './buff';
3
3
  import { CraftingBuff } from './craftingBuff';
4
- import { CraftingTechnique } from './craftingTechnique';
4
+ import { CraftingTechnique, KnownCraftingTechnique } from './craftingTechnique';
5
5
  import { TechniqueElement } from './element';
6
- import { ArtefactItem, CombatPillItem, CraftingEquipmentItem, Item, ItemDesc } from './item';
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
9
  import { KnownTechnique, Technique } from './technique';
@@ -31,6 +31,7 @@ export interface PlayerEntity {
31
31
  clothing: ItemDesc | undefined;
32
32
  talismans: (ItemDesc | undefined)[];
33
33
  artefacts: (ItemDesc | undefined)[];
34
+ autoUseItems?: (string | undefined)[];
34
35
  quickAccess?: (string | undefined)[];
35
36
  cauldron: ItemDesc | undefined;
36
37
  flame: ItemDesc | undefined;
@@ -38,14 +39,14 @@ export interface PlayerEntity {
38
39
  craftingLoadout: string[];
39
40
  currentCraftingLoadout?: StoredCraftingLoadout;
40
41
  storedCraftingLoadouts?: StoredCraftingLoadout[];
41
- craftingTechniques: string[];
42
+ craftingQuickAccess?: (string | undefined)[];
43
+ craftingTechniques: KnownCraftingTechnique[];
42
44
  destiny: string[];
43
45
  monthBuffs?: Buff[];
44
- autoCondenseAfterCombat?: boolean;
45
46
  injured?: boolean;
46
47
  }
47
- export type EnemyDifficulty = 'veryeasy' | 'easy' | 'mediumEasy' | 'medium' | 'medium+' | 'mediumhard' | 'hard' | 'hard+' | 'veryhard' | 'veryhard+';
48
- export type BattleLength = 'halfround' | '1round' | 'veryshort' | 'short' | 'medium' | 'long' | 'verylong' | 'verylong+';
48
+ export type EnemyDifficulty = 'veryeasy' | 'easy' | 'mediumEasy' | 'medium' | 'medium+' | 'mediumhard' | 'hard' | 'hard+' | 'veryhard' | 'veryhard+' | 'veryhard++' | 'veryhard+++' | 'veryhard++++';
49
+ export type BattleLength = 'halfround' | '1round' | 'veryshort' | 'short' | 'medium' | 'long' | 'verylong' | 'verylong+' | 'verylong++' | 'verylong+++' | 'verylong++++';
49
50
  export interface EnemyEntity {
50
51
  name: string;
51
52
  image: string;
@@ -73,7 +74,7 @@ export interface EnemyEntity {
73
74
  pillsPerRound?: number;
74
75
  pills?: {
75
76
  condition: string;
76
- pill: CombatPillItem;
77
+ pill: CombatPillItem | ConcoctionItem | CombatItem;
77
78
  }[];
78
79
  qiDroplets?: number;
79
80
  drops: {
@@ -90,6 +91,7 @@ export interface EnemyEntity {
90
91
  hp?: number;
91
92
  power?: number;
92
93
  };
94
+ preconfiguredCombatEntity?: CombatEntity;
93
95
  }
94
96
  export interface CombatMessage {
95
97
  id: number;
@@ -102,11 +104,17 @@ export interface CombatMessage {
102
104
  };
103
105
  lifetime: number;
104
106
  elapsed?: number;
107
+ screenshake?: {
108
+ intensity: 'light' | 'medium' | 'heavy' | 'critical';
109
+ damagePercent?: number;
110
+ };
105
111
  }
106
112
  export interface CraftingEntity {
113
+ realm: Realm;
107
114
  image: string;
108
115
  stats: CraftingStatsMap;
109
116
  skillBonus: number;
117
+ craftSkill: number;
110
118
  equipment: CraftingEquipmentItem[];
111
119
  techniques: CraftingTechnique[];
112
120
  buffs: CraftingBuff[];
@@ -139,6 +147,7 @@ export interface CombatEntity {
139
147
  usedOverrides: boolean[];
140
148
  usedPills: boolean[];
141
149
  defenseFactor: number;
150
+ battlesenseBonus?: number;
142
151
  spawnRoar?: SoundEffectName;
143
152
  buffs: Buff[];
144
153
  artefacts: CombatArtefact[];
@@ -152,7 +161,7 @@ export interface CombatEntity {
152
161
  disableBreathing?: boolean;
153
162
  }
154
163
  export type StanceRule = SingleStance | RandomStance;
155
- interface SingleStance {
164
+ export interface SingleStance {
156
165
  kind: 'single';
157
166
  condition?: string;
158
167
  stance: string;
@@ -172,10 +181,26 @@ export interface StoredStyle {
172
181
  autoName?: boolean;
173
182
  stances: StoredStance[];
174
183
  }
184
+ export type StoredRule = OpenerStoredRule | RotationStoredRule | ConditionalStoredRule;
185
+ export interface OpenerStoredRule {
186
+ kind: 'opener';
187
+ position: number;
188
+ }
189
+ export interface RotationStoredRule {
190
+ kind: 'rotation';
191
+ position: number;
192
+ }
193
+ export interface ConditionalStoredRule {
194
+ kind: 'conditional';
195
+ condition: string;
196
+ check: '<' | '==' | '>' | '!=';
197
+ value: number;
198
+ }
175
199
  export interface StoredStance {
176
200
  name: string;
177
201
  autoName?: boolean;
178
202
  techniques: string[];
203
+ stanceRule?: StoredRule;
179
204
  }
180
205
  export interface Stance {
181
206
  name: string;
package/dist/event.d.ts CHANGED
@@ -2,6 +2,7 @@ import { GameScreen } from './GameScreen';
2
2
  import { MusicName, SoundEffectName } from './audio';
3
3
  import { Buff } from './buff';
4
4
  import { FollowCharacterDefinition } from './character';
5
+ import { CraftingBuff } from './craftingBuff';
5
6
  import { IntimateTrait } from './dualCultivation';
6
7
  import { TechniqueElement } from './element';
7
8
  import { EnemyEntity } from './entity';
@@ -30,7 +31,7 @@ export interface GameEvent {
30
31
  value: number;
31
32
  }[];
32
33
  }
33
- export type EventStep = TextStep | SpeechStep | CombatStep | CraftingStep | ChoiceStep | ConditionalStep | SetFlagStep | ExitStep | CreateBuffStep | ConsumeBuffStep | ChangeLocationStep | AddItemStep | RemoveItemStep | AddQuestStep | ChangeMoneyStep | ChangeFavourStep | AddDestinyStep | ChangeReputationStep | QiStep | UnlockLocationStep | ClearCharacterStep | SetCharacterStep | LabelStep | GotoLabelStep | UnlockCraftingTechniqueStep | TalkToCharacterStep | TradeWithCharacterStep | CraftWithCharacterStep | FightCharacterStep | MarkBeatCharacterStep | MarkDidEncounterStep | ChangeHpStep | PassTimeStep | ReportAnalyticsStep | ApprovalStep | ProgressRelationshipStep | MarkGiftedStep | UpdateCharacterDefinitionStep | AuctionStep | MarkCalendarEventCompleteStep | AddMultipleItemStep | AdvanceMysticalRegionStep | CraftSkillStep | TournamentStep | TeamUpStep | AddFollowerStep | ClearTeamUpStep | UnlockAltarStep | DropItemStep | SetAltarCooldownStep | CompressCoreStep | ChangeScreenStep | UnlockTechniqueStep | ReplaceItemStep | DualCultivationStep | ChangeBGMStep | ClearChangeBGMStep | AddGuildApprovalStep | AdvanceGuildRankStep | OverridePlayerRealmStep | SetAidBreakthroughCooldownStep | StoneCuttingStep;
34
+ export type EventStep = TextStep | SpeechStep | CombatStep | CraftingStep | ChoiceStep | ConditionalStep | SetFlagStep | ExitStep | CreateBuffStep | ConsumeBuffStep | ChangeLocationStep | AddItemStep | RemoveItemStep | AddQuestStep | ChangeMoneyStep | ChangeFavourStep | AddDestinyStep | ChangeReputationStep | QiStep | UnlockLocationStep | ClearCharacterStep | SetCharacterStep | LabelStep | GotoLabelStep | UnlockCraftingTechniqueStep | TalkToCharacterStep | TradeWithCharacterStep | CraftWithCharacterStep | FightCharacterStep | MarkBeatCharacterStep | MarkDidEncounterStep | ChangeHpStep | PassTimeStep | ReportAnalyticsStep | ApprovalStep | ProgressRelationshipStep | MarkGiftedStep | UpdateCharacterDefinitionStep | AuctionStep | MarkCalendarEventCompleteStep | AddMultipleItemStep | AdvanceMysticalRegionStep | CraftSkillStep | TournamentStep | TeamUpStep | AddFollowerStep | ClearTeamUpStep | UnlockAltarStep | DropItemStep | SetAltarCooldownStep | CompressCoreStep | ChangeScreenStep | UnlockTechniqueStep | AddRecipeStep | ReplaceItemStep | DualCultivationStep | ChangeBGMStep | ClearChangeBGMStep | AddGuildApprovalStep | AdvanceGuildRankStep | OverridePlayerRealmStep | SetAidBreakthroughCooldownStep | StoneCuttingStep | GiveItemStep;
34
35
  export interface TextStep {
35
36
  kind: 'text';
36
37
  condition?: string;
@@ -47,8 +48,10 @@ export interface CombatStep {
47
48
  kind: 'combat';
48
49
  condition?: string;
49
50
  enemies: EnemyEntity[];
51
+ playerBuffs?: Buff[];
50
52
  numEnemies?: number;
51
53
  isSpar?: boolean;
54
+ bgm?: string[];
52
55
  victory: EventStep[];
53
56
  defeat: EventStep[];
54
57
  }
@@ -64,6 +67,8 @@ export interface CraftingStep {
64
67
  basic: EventStep[];
65
68
  failed: EventStep[];
66
69
  useCurrentBackground?: boolean;
70
+ buffs?: CraftingBuff[];
71
+ forceSublimeCrafting?: boolean;
67
72
  }
68
73
  export interface ChoiceStep {
69
74
  kind: `choice`;
@@ -147,6 +152,7 @@ export interface SetFlagStep {
147
152
  }
148
153
  export interface ExitStep {
149
154
  kind: 'exit';
155
+ preventQuestStepCompletion?: boolean;
150
156
  condition?: string;
151
157
  }
152
158
  export interface CreateBuffStep {
@@ -154,6 +160,7 @@ export interface CreateBuffStep {
154
160
  condition?: string;
155
161
  buff: Buff;
156
162
  amount: string;
163
+ persistBeyondEvent?: boolean;
157
164
  }
158
165
  export interface ConsumeBuffStep {
159
166
  kind: 'consumeBuff';
@@ -273,6 +280,11 @@ export interface UnlockTechniqueStep {
273
280
  condition?: string;
274
281
  technique: string;
275
282
  }
283
+ export interface AddRecipeStep {
284
+ kind: 'addRecipe';
285
+ condition?: string;
286
+ recipe: string;
287
+ }
276
288
  export interface TalkToCharacterStep {
277
289
  kind: 'talkToCharacter';
278
290
  condition?: string;
@@ -457,4 +469,15 @@ export interface StoneCuttingStep {
457
469
  condition?: string;
458
470
  realm: Realm;
459
471
  }
472
+ export interface GiveItemStep {
473
+ kind: 'giveItem';
474
+ condition?: string;
475
+ description: string;
476
+ itemNames: string[];
477
+ branches: {
478
+ item: string;
479
+ children: EventStep[];
480
+ }[];
481
+ cancel: EventStep[];
482
+ }
460
483
  export {};
@@ -1,10 +1,17 @@
1
- import { Buff, EnemyEntity, ItemDesc, Rarity, Realm } from '.';
1
+ import { EnemyEntity, ItemDesc, Realm } from '.';
2
2
  export interface FallenStar {
3
3
  name: string;
4
4
  realm: Realm;
5
5
  image: string;
6
- enemyBuffPool: Buff[];
7
- monsterPool: EnemyEntity[];
8
- rewardPools: Record<Rarity, ItemDesc[]>;
6
+ monsterPool: {
7
+ basic: EnemyEntity[];
8
+ elite: EnemyEntity[];
9
+ };
10
+ rewardPool: ItemDesc[];
9
11
  raidIntervalDays: number;
12
+ spawnCooldown: {
13
+ min: number;
14
+ max: number;
15
+ };
16
+ spawnLocations: string[];
10
17
  }
package/dist/item.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Buff } from './buff';
2
2
  import { CraftingBuff } from './craftingBuff';
3
- import { CraftingConditionSet, CraftingTechniqueEffect } from './craftingTechnique';
3
+ import { CraftingTechniqueEffect } from './craftingTechnique';
4
+ import { RecipeConditionEffect, RecipeHarmonyType } from './crafting';
4
5
  import { TechniqueElement } from './element';
5
6
  import { EnemyEntity } from './entity';
6
7
  import { Room } from './house';
@@ -10,14 +11,14 @@ import { Realm, RealmProgress } from './realm';
10
11
  import { RecipeDifficulty } from './RecipeDifficulty';
11
12
  import { CombatStatsMap, CraftingStatsMap, PhysicalStatistic, Scaling, SocialStatistic } from './stat';
12
13
  import { TechniqueEffect } from './technique';
13
- export declare const itemKinds: readonly ["clothing", "talisman", "artefact", "mount", "cauldron", "flame", "fruit", "elixir", "recipe", "technique", "action", "transport_seal", "enchantment", "pill", "concoction", "consumable", "recuperation", "formation", "breakthrough", "pillar_shard", "material", "flare", "mystical_key", "condensation_art", "blueprint", "trophy", "treasure", "token", "upgrade"];
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"];
14
15
  export type ItemKind = (typeof itemKinds)[number];
15
16
  export type ItemCostMap = {
16
17
  [key in ItemKind]: number;
17
18
  };
18
19
  export declare const buyItemCostMap: ItemCostMap;
19
20
  export declare const sellItemCostMap: ItemCostMap;
20
- 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;
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
22
  interface ItemBase {
22
23
  kind: ItemKind;
23
24
  name: string;
@@ -30,11 +31,13 @@ interface ItemBase {
30
31
  valueTier?: number;
31
32
  enchantment?: Enchantment;
32
33
  upgradedFrom?: Item;
34
+ qualityTier?: number;
33
35
  }
34
36
  export interface ItemDesc {
35
37
  name: string;
36
38
  stacks?: number;
37
39
  enchantment?: EnchantmentDesc;
40
+ qualityTier?: number;
38
41
  }
39
42
  export type TechniqueItemKind = 'technique' | 'crystal' | 'shard' | 'enhance';
40
43
  export interface BaseTechniqueItem extends ItemBase {
@@ -84,6 +87,7 @@ export interface ClothingEnchantment extends Enchantment {
84
87
  charisma?: number;
85
88
  masteryPoints?: number;
86
89
  qiAbsorption?: number;
90
+ restoredDroplets?: number;
87
91
  buffs?: {
88
92
  buff: Buff;
89
93
  buffStacks: Scaling;
@@ -103,6 +107,7 @@ export interface TalismanEnchantment extends Enchantment {
103
107
  buff: Buff;
104
108
  buffStacks: Scaling;
105
109
  }[];
110
+ restoredDroplets?: number;
106
111
  }
107
112
  export interface ArtefactItem extends ItemBase {
108
113
  kind: 'artefact';
@@ -118,6 +123,7 @@ export interface ArtefactEnchantment extends Enchantment {
118
123
  buff: Buff;
119
124
  buffStacks: Scaling;
120
125
  }[];
126
+ restoredDroplets?: number;
121
127
  }
122
128
  export interface ArtefactTechnique {
123
129
  icon: string;
@@ -146,6 +152,11 @@ export interface CraftingPillItem extends BasePillItem {
146
152
  toxicity: number;
147
153
  effects: CraftingTechniqueEffect[];
148
154
  }
155
+ export interface CraftingReagentItem extends ItemBase {
156
+ kind: 'reagent';
157
+ toxicity: number;
158
+ effects: CraftingTechniqueEffect[];
159
+ }
149
160
  export interface ConcoctionItem extends ItemBase {
150
161
  kind: 'concoction';
151
162
  effects: TechniqueEffect[];
@@ -226,7 +237,8 @@ export interface RecipeItem extends ItemBase {
226
237
  hideFromCompendium?: boolean;
227
238
  realmProgress: RealmProgress;
228
239
  difficulty: RecipeDifficulty;
229
- conditionSetOverride?: CraftingConditionSet;
240
+ conditionEffectOverride?: RecipeConditionEffect;
241
+ harmonyTypeOverride?: RecipeHarmonyType;
230
242
  ingredients: {
231
243
  item: Item;
232
244
  quantity: number;
@@ -241,6 +253,11 @@ export interface RecipeItem extends ItemBase {
241
253
  basicCraftSkillOverride?: number;
242
254
  perfectCraftSkillOverride?: number;
243
255
  sublimeCraftSkillOverride?: number;
256
+ basicBestResult?: number;
257
+ perfectBestResult?: number;
258
+ sublimeBestResult?: number;
259
+ isSublimeCraft?: boolean;
260
+ canOvercraft?: boolean;
244
261
  }
245
262
  export interface CraftingTechniqueItem extends ItemBase {
246
263
  kind: 'action';
@@ -286,7 +303,7 @@ export interface MysticalKeyItem extends ItemBase {
286
303
  hasCorePedestal: boolean;
287
304
  difficulty: RealmProgress;
288
305
  factionCurses: string[];
289
- rewardPools: RewardPool[];
306
+ rewardPools: string[];
290
307
  overrideEncounterPool?: RegionMonsters;
291
308
  }
292
309
  export interface Encounter {
@@ -310,6 +327,7 @@ export interface CondensationArtItem extends ItemBase {
310
327
  moneyCost?: number;
311
328
  producedDroplets: number;
312
329
  maxDroplets: number;
330
+ restoredDroplets?: number;
313
331
  statChange: Partial<Record<PhysicalStatistic, number>>;
314
332
  lifespanMult?: number;
315
333
  charismaMult?: number;
@@ -323,6 +341,7 @@ export interface CondensationArtEnchantment extends Enchantment {
323
341
  qiAbsorption?: number;
324
342
  masteryPoints?: number;
325
343
  speed?: number;
344
+ restoredDroplets?: number;
326
345
  }
327
346
  export type FormationKind = 'herbField' | 'qiDensity';
328
347
  export type FormationItem = HerbFieldFormationItem | QiDensityFormationItem;
@@ -340,24 +359,45 @@ export interface QiDensityFormationItem extends FormationItemBase {
340
359
  buffs: Buff[];
341
360
  moneyCost: number;
342
361
  }
362
+ export interface PillarShardVariant {
363
+ title: string;
364
+ icon: string;
365
+ physicalStats?: Partial<Record<PhysicalStatistic, number>>;
366
+ socialStats?: Partial<Record<SocialStatistic, number>>;
367
+ combatBuffs?: {
368
+ buff: Buff;
369
+ buffStacks: Scaling;
370
+ }[];
371
+ craftingBuffs?: {
372
+ buff: CraftingBuff;
373
+ buffStacks: Scaling;
374
+ }[];
375
+ dropletRegen?: number;
376
+ }
343
377
  export interface PillarShardItem extends ItemBase {
344
378
  kind: 'pillar_shard';
345
379
  tooltip: string;
346
- input?: {
347
- threshold: number;
380
+ maxInstances?: number;
381
+ variants?: PillarShardVariant[];
382
+ stability?: number;
383
+ inputs?: {
384
+ left?: number;
385
+ right?: number;
386
+ bottom?: number;
387
+ top?: number;
348
388
  };
349
389
  output?: {
350
390
  mode: 'flat' | 'multiply' | 'add';
351
391
  left: number;
352
392
  top: number;
353
393
  right: number;
394
+ bottom: number;
354
395
  };
355
- stats?: Partial<Record<PhysicalStatistic, number>>;
356
- stability?: number;
357
396
  }
358
397
  export interface TrophyItem extends ItemBase {
359
398
  kind: 'trophy';
360
399
  hint: string;
400
+ achievementID: string;
361
401
  }
362
402
  export interface BlueprintItem extends ItemBase {
363
403
  kind: 'blueprint';
@@ -369,4 +409,8 @@ export interface TokenItem extends ItemBase {
369
409
  export interface UpgradeItem extends ItemBase {
370
410
  kind: 'upgrade';
371
411
  }
412
+ export interface UncutStonePool {
413
+ fallback: Item[];
414
+ items: Item[];
415
+ }
372
416
  export {};
@@ -0,0 +1,3 @@
1
+ import { RecipeHarmonyType } from './crafting';
2
+ import { ItemKind } from './item';
3
+ export declare const itemTypeToHarmonyType: Record<ItemKind, RecipeHarmonyType>;
@@ -30,6 +30,7 @@ export interface GameLocation {
30
30
  explorationEvent?: LocationEvent[];
31
31
  mapEvents?: LocationMapEvent[];
32
32
  missions?: SectMission[];
33
+ crafting?: CraftingMission[];
33
34
  realm?: Realm;
34
35
  realmProgress?: RealmProgress;
35
36
  reputationName?: string;
@@ -45,7 +46,7 @@ export interface ConditionalLink extends LinkBase {
45
46
  export interface ExplorationLink extends LinkBase {
46
47
  exploration: number;
47
48
  event: EventStep[];
48
- condition?: undefined;
49
+ condition?: string;
49
50
  }
50
51
  export interface LocationEnemy {
51
52
  enemy: EnemyEntity;
@@ -77,10 +78,16 @@ export interface SectMission {
77
78
  quest: string;
78
79
  condition: string;
79
80
  }
81
+ export interface CraftingMission {
82
+ realm: Realm;
83
+ rarity: Rarity;
84
+ quest: string;
85
+ condition: string;
86
+ }
80
87
  export declare const exploresPerUnlock = 3;
81
- export type BuildingType = 'cultivation' | 'manual' | 'crafting' | 'mission' | 'healer' | 'market' | 'favourExchange' | 'vault' | 'custom' | 'herbField' | 'mine' | 'recipe' | 'requestBoard' | 'compendium' | 'mysticalRegion' | 'trainingGround' | 'library' | 'house' | 'altar' | 'research' | 'guild';
82
- export type LocationBuilding = CultivationBuilding | ManualBuilding | CraftingBuilding | MissionBuilding | HealerBuilding | MarketBuilding | VaultBuilding | FavourExchangeBuilding | CustomBuilding | HerbFieldBuilding | MineBuilding | RecipeLibraryBuilding | RequestBoardBuilding | CompendiumBuilding | MysticalRegionBuilding | TrainingGroundBuilding | LibraryBuilding | HouseBuilding | CompressionAltarBuilding | ResearchBuilding | GuildBuilding;
83
- export type LocationBuildingState = MissionBuildingState | ShopBuildingState | RequestBoardBuildingState | HouseBuildingState | CompressionAltarBuildingState;
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';
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;
90
+ export type LocationBuildingState = MissionBuildingState | CraftingHallBuildingState | ShopBuildingState | RequestBoardBuildingState | HouseBuildingState | CompressionAltarBuildingState;
84
91
  interface BuildingBase {
85
92
  kind: BuildingType;
86
93
  condition?: string;
@@ -113,11 +120,19 @@ export interface CraftingBuilding extends BuildingBase {
113
120
  export interface MissionBuilding extends BuildingBase {
114
121
  kind: 'mission';
115
122
  }
123
+ export interface CraftingHallBuilding extends BuildingBase {
124
+ kind: 'craftingHall';
125
+ }
116
126
  export interface MissionBuildingState {
117
127
  kind: 'mission';
118
128
  missions: SectMission[];
119
129
  accepted: SectMission[];
120
130
  }
131
+ export interface CraftingHallBuildingState {
132
+ kind: 'craftingHall';
133
+ missions: CraftingMission[];
134
+ accepted: CraftingMission[];
135
+ }
121
136
  export interface HealerBuilding extends BuildingBase {
122
137
  kind: 'healer';
123
138
  }
@@ -170,6 +185,9 @@ export interface Request {
170
185
  rarity: Rarity;
171
186
  condition: string;
172
187
  }
188
+ export interface AcceptedRequest extends Request {
189
+ acceptedFromLocation: string;
190
+ }
173
191
  export interface RequestBoardBuilding extends BuildingBase {
174
192
  kind: 'requestBoard';
175
193
  requests: {
@@ -179,7 +197,7 @@ export interface RequestBoardBuilding extends BuildingBase {
179
197
  export interface RequestBoardBuildingState {
180
198
  kind: 'requestBoard';
181
199
  requests: Request[];
182
- accepted: Request[];
200
+ accepted: AcceptedRequest[];
183
201
  }
184
202
  export interface MysticalRegionBuilding extends BuildingBase {
185
203
  kind: 'mysticalRegion';
package/dist/mod.d.ts CHANGED
@@ -6,13 +6,14 @@ import { Breakthrough } from './breakthrough';
6
6
  import { Buff } from './buff';
7
7
  import { CalendarEvent } from './calendar';
8
8
  import { Character } from './character';
9
- import { CraftingCondition, CraftingTechnique } from './craftingTechnique';
9
+ import { CraftingTechnique } from './craftingTechnique';
10
+ import { RecipeConditionEffect } from './crafting';
10
11
  import { Destiny } from './destiny';
11
12
  import { EnemyEntity } from './entity';
12
13
  import { EventStep, TriggeredEvent } from './event';
13
14
  import { Guild } from './guild';
14
15
  import { Crop } from './herbField';
15
- import { Item, RecipeItem } from './item';
16
+ import { Enchantment, Item, RecipeItem, UncutStonePool } from './item';
16
17
  import { ConditionalLink, ExplorationLink, GameLocation, LocationEnemy, LocationEvent } from './location';
17
18
  import { Manual } from './manual';
18
19
  import { MineChamber } from './mine';
@@ -20,6 +21,10 @@ import { Quest } from './quest';
20
21
  import { Realm, RealmProgress } from './realm';
21
22
  import { ReputationTier } from './stat';
22
23
  import { Technique } from './technique';
24
+ import { IntimateTechnique } from './dualCultivation';
25
+ import { FallenStar } from './fallenStar';
26
+ import { Room } from './house';
27
+ import { Blessing } from './mysticalRegion';
23
28
  export interface ModMetadata {
24
29
  name: string;
25
30
  version: string;
@@ -41,7 +46,7 @@ export interface ModAPI {
41
46
  breakthroughs: Record<Realm, Breakthrough[]>;
42
47
  calendarEvents: CalendarEvent[];
43
48
  craftingTechniques: Record<string, CraftingTechnique>;
44
- craftingConditions: Record<string, CraftingCondition>;
49
+ recipeConditionEffects: RecipeConditionEffect[];
45
50
  destinies: Record<string, Destiny>;
46
51
  triggeredEvents: TriggeredEvent[];
47
52
  crops: Record<Realm, Crop[]>;
@@ -58,12 +63,15 @@ export interface ModAPI {
58
63
  empoweredBlood: Buff;
59
64
  hardenedBlood: Buff;
60
65
  pureBlood: Buff;
66
+ bloodEcho: Buff;
61
67
  };
62
68
  blossom: {
63
69
  fragrantBlossom: Buff;
64
70
  fatalFlora: Buff;
65
71
  razorBlossom: Buff;
66
72
  ironBlossom: Buff;
73
+ witheringBlossom: Buff;
74
+ soilDepletion: Buff;
67
75
  };
68
76
  celestial: {
69
77
  sunlight: Buff;
@@ -83,13 +91,23 @@ export interface ModAPI {
83
91
  rippleForce: Buff;
84
92
  transcendentFocus: Buff;
85
93
  weakness: Buff;
94
+ goldenAura: Buff;
86
95
  };
87
96
  weapon: {
88
97
  metalShard: Buff;
89
98
  metalFragment: Buff;
99
+ magnetizedMetal: Buff;
100
+ stormOfSteel: Buff;
90
101
  };
91
102
  };
92
103
  guilds: Record<string, Guild>;
104
+ dualCultivationTechniques: IntimateTechnique[];
105
+ enchantments: Enchantment[];
106
+ fallenStars: FallenStar[];
107
+ rooms: Room[];
108
+ researchableMap: Record<string, RecipeItem[]>;
109
+ uncutStones: Record<Realm, UncutStonePool | undefined>;
110
+ mysticalRegionBlessings: Blessing[];
93
111
  };
94
112
  actions: {
95
113
  addBirthBackground: (background: Background) => void;
@@ -116,10 +134,19 @@ export interface ModAPI {
116
134
  addMusic: (name: string, path: string[]) => void;
117
135
  addSfx: (name: string, path: string) => void;
118
136
  addGuild: (guild: Guild) => void;
137
+ addDualCultivationTechnique: (technique: IntimateTechnique) => void;
138
+ addEnchantment: (enchantment: Enchantment) => void;
139
+ addFallenStar: (fallenStar: FallenStar) => void;
140
+ addRoom: (room: Room) => void;
141
+ addResearchableRecipe: (baseItem: string, recipe: RecipeItem) => void;
142
+ addUncutStone: (realm: Realm, uncutStone: Item) => void;
143
+ addMysticalRegionBlessing: (blessing: Blessing) => void;
119
144
  };
120
145
  utils: {
121
146
  alpha: (enemy: EnemyEntity) => EnemyEntity;
122
147
  alphaPlus: (enemy: EnemyEntity) => EnemyEntity;
148
+ realmbreaker: (enemy: EnemyEntity) => EnemyEntity[];
149
+ corrupted: (enemy: EnemyEntity) => EnemyEntity;
123
150
  createCombatEvent: (enemy: LocationEnemy) => LocationEvent;
124
151
  createCullingMission: (monster: EnemyEntity, location: string, description: string, favour: number) => Quest;
125
152
  createCollectionMission: (item: Item, location: string, description: string, favour: number) => Quest;
@@ -137,6 +164,7 @@ export interface ModAPI {
137
164
  getExpectedPool: (realm: Realm, progress: RealmProgress) => number;
138
165
  getExpectedIntensity: (realm: Realm, progress: RealmProgress) => number;
139
166
  getExpectedControl: (realm: Realm, progress: RealmProgress) => number;
167
+ getExpectedPlayerPower: (realm: Realm, progress: RealmProgress) => number;
140
168
  getExpectedArtefactPower: (realm: Realm, progress: RealmProgress) => number;
141
169
  getBreakthroughCharisma: (realm: Realm, mult: number) => number;
142
170
  getClothingDefense: (realm: Realm, scale: number) => number;
@@ -7,6 +7,6 @@ export interface Blessing {
7
7
  rarity: Rarity;
8
8
  restriction?: 'player' | 'enemy' | 'custom';
9
9
  }
10
- export type RegionContentType = 'balanced' | 'elite' | 'brutal' | 'cursed' | 'blessed' | 'glitch' | 'linGlitch';
10
+ export type RegionContentType = 'balanced' | 'elite' | 'brutal' | 'cursed' | 'blessed' | 'glitch' | 'linGlitch' | 'ancientRelic';
11
11
  export declare const contentTypeToDescription: Record<RegionContentType, string>;
12
12
  export declare const contentTypeToProgress: Record<RegionContentType, RegionProgress[]>;
package/dist/quest.d.ts CHANGED
@@ -3,11 +3,12 @@ import { ItemDesc } from './item';
3
3
  export interface Quest {
4
4
  name: string;
5
5
  description: string;
6
- category: 'main' | 'side' | 'missionHall' | 'requestBoard' | 'guild';
6
+ category: 'main' | 'side' | 'missionHall' | 'craftingHall' | 'requestBoard' | 'guild';
7
7
  guild?: string;
8
8
  steps: QuestStep[];
9
9
  rewards: QuestReward[];
10
10
  failureCondition?: string;
11
+ cost?: number;
11
12
  }
12
13
  export interface QuestProgressState {
13
14
  name: string;
package/dist/realm.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const realms: readonly ["mundane", "bodyForging", "meridianOpening", "qiCondensation", "coreFormation", "pillarCreation", "lifeFlourishing", "buddingSoul", "soulSeparation", "soulAscension"];
1
+ export declare const realms: readonly ["mundane", "bodyForging", "meridianOpening", "qiCondensation", "coreFormation", "pillarCreation", "lifeFlourishing", "worldShaping", "innerGenesis", "soulAscension"];
2
2
  export type Realm = (typeof realms)[number];
3
3
  export declare const realmProgress: readonly ["Early", "Middle", "Late"];
4
4
  export type RealmProgress = (typeof realmProgress)[number];
package/dist/stat.d.ts CHANGED
@@ -2,8 +2,8 @@ import { Buff } from './buff';
2
2
  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
- export declare const craftingStatistics: readonly ["maxpool", "pool", "maxtoxicity", "toxicity", "resistance", "itemEffectiveness", "control", "intensity", "critchance", "critmultiplier", "stabilityreduction", "pillsPerRound", "poolCostPercentage", "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", "qiDroplets", "fistDisabled", "bloodDisabled", "blossomDisabled", "cloudDisabled", "celestialDisabled", "weaponDisabled", "fistResistance", "blossomResistance", "weaponResistance", "cloudResistance", "bloodResistance", "celestialResistance"];
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"];
7
7
  export type PhysicalStatistic = (typeof physicalStatistics)[number];
8
8
  export type SocialStatistic = (typeof socialStatistics)[number];
9
9
  export type CraftingStatistic = (typeof craftingStatistics)[number];
@@ -13,7 +13,7 @@ export interface KnownTechnique {
13
13
  mastery?: KnownTechniqueMastery[];
14
14
  enhancement?: number;
15
15
  }
16
- export declare const stanceRestriction: readonly ["opener", "finisher", "droplet"];
16
+ export declare const stanceRestriction: readonly ["opener", "finisher"];
17
17
  export type StanceRestriction = (typeof stanceRestriction)[number];
18
18
  export declare const stanceRestrictionToName: Record<StanceRestriction, string>;
19
19
  export interface Technique {
@@ -40,6 +40,7 @@ export interface Technique {
40
40
  tooltip?: string;
41
41
  effects: TechniqueEffect[];
42
42
  realm?: Realm;
43
+ disableCrystalDrop?: boolean;
43
44
  mastery?: TechniqueMastery[];
44
45
  masteryKindPools?: TechniqueEffectKind[];
45
46
  upgradeMasteries?: {
@@ -60,11 +61,13 @@ interface BuffSelfTechniqueEffect extends BaseTechniqueEffect {
60
61
  buff: Buff;
61
62
  amount: Scaling;
62
63
  hits?: Scaling;
64
+ hideBuff?: boolean;
63
65
  }
64
66
  interface ConsumeSelfTechniqueEffect extends BaseTechniqueEffect {
65
67
  kind: 'consumeSelf';
66
68
  buff: Buff;
67
69
  amount: Scaling;
70
+ hideBuff?: boolean;
68
71
  }
69
72
  interface ConvertSelfTechniqueEffect extends BaseTechniqueEffect {
70
73
  kind: 'convertSelf';
@@ -84,11 +87,13 @@ interface BuffTargetTechniqueEffect extends BaseTechniqueEffect {
84
87
  buff: Buff;
85
88
  amount: Scaling;
86
89
  hits?: Scaling;
90
+ hideBuff?: boolean;
87
91
  }
88
92
  interface ConsumeTargetTechniqueEffect extends BaseTechniqueEffect {
89
93
  kind: 'consumeTarget';
90
94
  buff: Buff;
91
95
  amount: Scaling;
96
+ hideBuff?: boolean;
92
97
  }
93
98
  interface DamageTechniqueEffect extends BaseTechniqueEffect {
94
99
  kind: 'damage';
@@ -146,7 +151,6 @@ interface CritDamageTechniqueMastery extends BaseTechniqueMastery {
146
151
  }
147
152
  interface EffectTechniqueMastery extends BaseTechniqueMastery {
148
153
  kind: 'effect';
149
- tooltip?: string;
150
154
  effects: TechniqueEffect[];
151
155
  }
152
156
  export interface UpgradeTechniqueMastery extends BaseTechniqueMastery {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "afnm-types",
3
- "version": "0.5.28",
3
+ "version": "0.6.8",
4
4
  "description": "Type definitions for Ascend From Nine Mountains",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [