afnm-types 0.6.24 → 0.6.26
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/alternativeStart.d.ts +101 -0
- package/dist/alternativeStart.js +18 -0
- package/dist/breakthrough.d.ts +1 -0
- package/dist/buff.d.ts +4 -1
- package/dist/craftingTechnique.d.ts +3 -3
- package/dist/entity.d.ts +11 -1
- package/dist/entity.js +1 -0
- package/dist/item.d.ts +9 -0
- package/dist/mod.d.ts +120 -0
- package/dist/reduxState.d.ts +6 -0
- package/dist/stat.d.ts +6 -1
- package/dist/stat.js +9 -6
- package/dist/technique.d.ts +4 -3
- package/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Tutorial } from './tutorial';
|
|
2
|
+
import { TriggeredEvent, GameEvent } from './event';
|
|
3
|
+
import { ItemDesc } from './item';
|
|
4
|
+
import { PlayerEntity } from './entity';
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for an alternative game start.
|
|
7
|
+
* Mods can register alternative starts to provide different opening experiences,
|
|
8
|
+
* starting locations, and initial player setups.
|
|
9
|
+
*/
|
|
10
|
+
export interface AlternativeStart {
|
|
11
|
+
/**
|
|
12
|
+
* Unique identifier for this start (e.g., "defaultStart", "rogueStart")
|
|
13
|
+
*/
|
|
14
|
+
name: string;
|
|
15
|
+
/**
|
|
16
|
+
* Display name shown in the UI (e.g., "Standard Start", "Rogue Cultivator")
|
|
17
|
+
*/
|
|
18
|
+
displayName: string;
|
|
19
|
+
/**
|
|
20
|
+
* Description shown in the selection UI explaining this start option
|
|
21
|
+
*/
|
|
22
|
+
description: string;
|
|
23
|
+
/**
|
|
24
|
+
* The root event that plays when starting the game.
|
|
25
|
+
* This replaces the default newGameEvent.
|
|
26
|
+
*/
|
|
27
|
+
rootEvent: GameEvent;
|
|
28
|
+
/**
|
|
29
|
+
* The starting location name. This becomes the root for location discovery
|
|
30
|
+
* (used by discoverUnlockedLocations). All location searches will branch
|
|
31
|
+
* from this location.
|
|
32
|
+
*/
|
|
33
|
+
startLocation: string;
|
|
34
|
+
/**
|
|
35
|
+
* Flags to set when starting the game (regardless of skip tutorial).
|
|
36
|
+
* These are set before the root event plays.
|
|
37
|
+
*/
|
|
38
|
+
startFlags?: Record<string, number>;
|
|
39
|
+
/**
|
|
40
|
+
* Items to give the player at game start.
|
|
41
|
+
*/
|
|
42
|
+
startItems?: ItemDesc[];
|
|
43
|
+
/**
|
|
44
|
+
* Technique names to teach the player at game start.
|
|
45
|
+
*/
|
|
46
|
+
startTechniques?: string[];
|
|
47
|
+
/**
|
|
48
|
+
* Recipe names to teach the player at game start.
|
|
49
|
+
*/
|
|
50
|
+
startRecipes?: string[];
|
|
51
|
+
/**
|
|
52
|
+
* Destiny names to grant the player at game start.
|
|
53
|
+
*/
|
|
54
|
+
startDestinies?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* Quest names to add to the player's quest log at game start.
|
|
57
|
+
*/
|
|
58
|
+
startQuests?: string[];
|
|
59
|
+
/**
|
|
60
|
+
* Spirit stones to give at game start.
|
|
61
|
+
*/
|
|
62
|
+
startMoney?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Sect favour to give at game start.
|
|
65
|
+
*/
|
|
66
|
+
startFavour?: number;
|
|
67
|
+
/**
|
|
68
|
+
* Custom tutorials for this start. If undefined, uses base game tutorials.
|
|
69
|
+
* These define what tutorials will play during the game.
|
|
70
|
+
*/
|
|
71
|
+
tutorials?: Tutorial[];
|
|
72
|
+
/**
|
|
73
|
+
* Custom tutorial triggers for this start. If undefined, uses base game triggers.
|
|
74
|
+
* These are the triggered events that form the opening sequence.
|
|
75
|
+
*/
|
|
76
|
+
tutorialTriggers?: TriggeredEvent[];
|
|
77
|
+
/**
|
|
78
|
+
* Additional flag names to set when the player chooses "Skip Tutorial".
|
|
79
|
+
* The system will automatically set the standard skip flags for the
|
|
80
|
+
* tutorials and tutorialTriggers arrays. Use this for any extra flags
|
|
81
|
+
* specific to your alternative start.
|
|
82
|
+
*/
|
|
83
|
+
skipTutorialFlags?: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Condition expression for this start to be available.
|
|
86
|
+
* If undefined, the start is always available.
|
|
87
|
+
* Example: "completedGameOnce" to require a previous completion.
|
|
88
|
+
*/
|
|
89
|
+
condition?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Optional function to modify the player entity after base setup.
|
|
92
|
+
* Called after backgrounds are applied but before the game starts.
|
|
93
|
+
*/
|
|
94
|
+
modifyPlayer?: (player: PlayerEntity) => PlayerEntity;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generates the flags that should be set when skipping tutorials.
|
|
98
|
+
* For each tutorial: sets {name}, {name}Started, {name}Completed
|
|
99
|
+
* For each trigger: sets {name}, {name}Started
|
|
100
|
+
*/
|
|
101
|
+
export declare const generateSkipTutorialFlags: (tutorials: Tutorial[], triggers: TriggeredEvent[]) => Record<string, number>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates the flags that should be set when skipping tutorials.
|
|
3
|
+
* For each tutorial: sets {name}, {name}Started, {name}Completed
|
|
4
|
+
* For each trigger: sets {name}, {name}Started
|
|
5
|
+
*/
|
|
6
|
+
export const generateSkipTutorialFlags = (tutorials, triggers) => {
|
|
7
|
+
const flags = {};
|
|
8
|
+
for (const tutorial of tutorials) {
|
|
9
|
+
flags[tutorial.name] = 1;
|
|
10
|
+
flags[tutorial.name + 'Started'] = 1;
|
|
11
|
+
flags[tutorial.name + 'Completed'] = 1;
|
|
12
|
+
}
|
|
13
|
+
for (const trigger of triggers) {
|
|
14
|
+
flags[trigger.name] = 1;
|
|
15
|
+
flags[trigger.name + 'Started'] = 1;
|
|
16
|
+
}
|
|
17
|
+
return flags;
|
|
18
|
+
};
|
package/dist/breakthrough.d.ts
CHANGED
|
@@ -97,6 +97,7 @@ export interface RequirementResult {
|
|
|
97
97
|
}
|
|
98
98
|
export interface Breakthrough extends BreakthroughBase {
|
|
99
99
|
unlocked?: (flags: Record<string, number>, args: RequirementArgs) => boolean;
|
|
100
|
+
hide?: string;
|
|
100
101
|
hint?: ReactNode;
|
|
101
102
|
requirements: ((args: RequirementArgs) => RequirementResult)[];
|
|
102
103
|
totalRequirements: number | ((args: RequirementArgs) => number);
|
package/dist/buff.d.ts
CHANGED
|
@@ -56,7 +56,7 @@ export interface Buff {
|
|
|
56
56
|
speed?: number;
|
|
57
57
|
applicationStats?: Record<CombatStatistic, number>;
|
|
58
58
|
applicationVariables?: Record<string, number>;
|
|
59
|
-
|
|
59
|
+
appliedByOpponent?: boolean;
|
|
60
60
|
allowMultipleInstances?: boolean;
|
|
61
61
|
storedVariables?: Record<string, string>;
|
|
62
62
|
uniqueId?: string;
|
|
@@ -79,6 +79,8 @@ export interface Buff {
|
|
|
79
79
|
triggeredBuffEffects?: {
|
|
80
80
|
trigger: string;
|
|
81
81
|
effects: BuffEffect[];
|
|
82
|
+
/** If true, this trigger will also fire when the opponent triggers the same event */
|
|
83
|
+
listenToOpponent?: boolean;
|
|
82
84
|
}[];
|
|
83
85
|
damageInterceptorEffects?: {
|
|
84
86
|
trigger?: TechniqueCondition;
|
|
@@ -247,6 +249,7 @@ interface CleanseToxicityEffect extends BaseBuff {
|
|
|
247
249
|
}
|
|
248
250
|
interface ModifyBuffGroupEffect extends BaseBuff {
|
|
249
251
|
kind: 'modifyBuffGroup';
|
|
252
|
+
onTarget?: boolean;
|
|
250
253
|
group: string;
|
|
251
254
|
amount: Scaling;
|
|
252
255
|
}
|
|
@@ -113,7 +113,7 @@ export interface CraftingRecipeStats {
|
|
|
113
113
|
conditionType: RecipeConditionEffect;
|
|
114
114
|
harmonyType: RecipeHarmonyType;
|
|
115
115
|
}
|
|
116
|
-
export type CraftingTechniqueMastery = ControlMastery | IntensityMastery | CritChanceTechniqueMastery |
|
|
116
|
+
export type CraftingTechniqueMastery = ControlMastery | IntensityMastery | CritChanceTechniqueMastery | CritMultiplierTechniqueMastery | EffectTechniqueMastery | UpgradeCraftingTechniqueMastery | PoolCostMastery | StabilityCostMastery | SuccessChanceMastery;
|
|
117
117
|
interface BaseCraftingTechniqueMastery {
|
|
118
118
|
condition?: CraftingTechniqueCondition;
|
|
119
119
|
tooltip?: string;
|
|
@@ -131,8 +131,8 @@ interface CritChanceTechniqueMastery extends BaseCraftingTechniqueMastery {
|
|
|
131
131
|
kind: 'critchance';
|
|
132
132
|
percentage: number;
|
|
133
133
|
}
|
|
134
|
-
interface
|
|
135
|
-
kind: '
|
|
134
|
+
interface CritMultiplierTechniqueMastery extends BaseCraftingTechniqueMastery {
|
|
135
|
+
kind: 'critmultiplier';
|
|
136
136
|
percentage: number;
|
|
137
137
|
}
|
|
138
138
|
interface EffectTechniqueMastery extends BaseCraftingTechniqueMastery {
|
package/dist/entity.d.ts
CHANGED
|
@@ -7,6 +7,15 @@ import { ArtefactItem, CombatItem, CombatPillItem, ConcoctionItem, CraftingEquip
|
|
|
7
7
|
import { Realm, RealmProgress } from './realm';
|
|
8
8
|
import { CombatStatsMap, CraftingStatsMap, PhysicalStatistic, SocialStatistic } from './stat';
|
|
9
9
|
import { KnownTechnique, Technique, TechniquePriority } from './technique';
|
|
10
|
+
export interface CombatEffectTracking {
|
|
11
|
+
icon: string;
|
|
12
|
+
background: string;
|
|
13
|
+
damage: number;
|
|
14
|
+
healing: number;
|
|
15
|
+
barrier: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const entityTypes: readonly ["Player", "Lifeform", "Enemy"];
|
|
18
|
+
export type EntityType = (typeof entityTypes)[number];
|
|
10
19
|
export declare const sexes: readonly ["male", "female"];
|
|
11
20
|
export type Sex = (typeof sexes)[number];
|
|
12
21
|
export interface PlayerEntity {
|
|
@@ -209,7 +218,7 @@ export interface CombatArtefact extends ArtefactItem {
|
|
|
209
218
|
animations: ('bump' | 'buff' | 'debuff' | 'attack')[];
|
|
210
219
|
}
|
|
211
220
|
export interface CombatEntity {
|
|
212
|
-
|
|
221
|
+
entityType: EntityType;
|
|
213
222
|
image: string;
|
|
214
223
|
supportImage?: {
|
|
215
224
|
image: string;
|
|
@@ -278,6 +287,7 @@ export interface CombatEntity {
|
|
|
278
287
|
y: number;
|
|
279
288
|
};
|
|
280
289
|
disableBreathing?: boolean;
|
|
290
|
+
effectTracking: Record<string, CombatEffectTracking>;
|
|
281
291
|
}
|
|
282
292
|
export type StanceRule = SingleStance | RandomStance;
|
|
283
293
|
export interface SingleStance {
|
package/dist/entity.js
CHANGED
package/dist/item.d.ts
CHANGED
|
@@ -357,6 +357,15 @@ export interface CondensationArtItem extends ItemBase {
|
|
|
357
357
|
maxDroplets: number;
|
|
358
358
|
restoredDroplets?: number;
|
|
359
359
|
statChange: Partial<Record<PhysicalStatistic, number>>;
|
|
360
|
+
socialStatsChange?: Partial<Record<SocialStatistic, number>>;
|
|
361
|
+
combatBuffs?: {
|
|
362
|
+
buff: Buff;
|
|
363
|
+
buffStacks: Scaling;
|
|
364
|
+
}[];
|
|
365
|
+
craftingBuffs?: {
|
|
366
|
+
buff: CraftingBuff;
|
|
367
|
+
buffStacks: Scaling;
|
|
368
|
+
}[];
|
|
360
369
|
lifespanMult?: number;
|
|
361
370
|
charismaMult?: number;
|
|
362
371
|
}
|
package/dist/mod.d.ts
CHANGED
|
@@ -33,6 +33,9 @@ import { ScreenEffectType } from './ScreenEffectType';
|
|
|
33
33
|
import { RootState } from './reduxState';
|
|
34
34
|
import { GameButtonFC, GameDialogFC, GameIconButtonFC, MemoBackgroundImageFC } from './components';
|
|
35
35
|
import { PuppetType } from './trainingGround';
|
|
36
|
+
import { TechniqueElement } from './element';
|
|
37
|
+
import { AlternativeStart } from './alternativeStart';
|
|
38
|
+
import { Tutorial } from './tutorial';
|
|
36
39
|
export interface ModMetadata {
|
|
37
40
|
name: string;
|
|
38
41
|
version: string;
|
|
@@ -329,6 +332,26 @@ export interface ModAPI {
|
|
|
329
332
|
itemTypeToHarmonyType: Record<ItemKind, RecipeHarmonyType>;
|
|
330
333
|
puppets: PuppetType[];
|
|
331
334
|
monsters: EnemyEntity[];
|
|
335
|
+
/**
|
|
336
|
+
* Registry of alternative game starts.
|
|
337
|
+
* The first entry is always the default start.
|
|
338
|
+
*/
|
|
339
|
+
alternativeStarts: AlternativeStart[];
|
|
340
|
+
/**
|
|
341
|
+
* Tutorial system data for creating alternative starts.
|
|
342
|
+
*/
|
|
343
|
+
tutorials: {
|
|
344
|
+
/**
|
|
345
|
+
* The tutorials that play during a new game (base game set).
|
|
346
|
+
* Use this as a reference when creating alternative starts.
|
|
347
|
+
*/
|
|
348
|
+
newGameTutorials: Tutorial[];
|
|
349
|
+
/**
|
|
350
|
+
* The triggered events that form the opening sequence (base game set).
|
|
351
|
+
* Use this as a reference when creating alternative starts.
|
|
352
|
+
*/
|
|
353
|
+
tutorialTriggers: TriggeredEvent[];
|
|
354
|
+
};
|
|
332
355
|
};
|
|
333
356
|
actions: {
|
|
334
357
|
/**
|
|
@@ -608,6 +631,24 @@ export interface ModAPI {
|
|
|
608
631
|
* @param puppet - Puppet configuration
|
|
609
632
|
*/
|
|
610
633
|
addPuppetType: (puppet: PuppetType) => void;
|
|
634
|
+
/**
|
|
635
|
+
* Register an alternative game start.
|
|
636
|
+
* Alternative starts provide different opening experiences, starting locations,
|
|
637
|
+
* and initial player setups. Players can select from available starts when
|
|
638
|
+
* creating a new game.
|
|
639
|
+
* @param start - Alternative start configuration
|
|
640
|
+
* @example
|
|
641
|
+
* addAlternativeStart({
|
|
642
|
+
* name: 'rogueStart',
|
|
643
|
+
* displayName: 'Rogue Cultivator',
|
|
644
|
+
* description: 'Begin as a wandering cultivator with no sect affiliation.',
|
|
645
|
+
* rootEvent: rogueOpeningEvent,
|
|
646
|
+
* startLocation: 'Liang Tiao Village',
|
|
647
|
+
* startItems: [{ name: 'Tattered Robes', count: 1 }],
|
|
648
|
+
* startMoney: 50,
|
|
649
|
+
* });
|
|
650
|
+
*/
|
|
651
|
+
addAlternativeStart: (start: AlternativeStart) => void;
|
|
611
652
|
};
|
|
612
653
|
utils: {
|
|
613
654
|
/**
|
|
@@ -961,6 +1002,85 @@ export interface ModAPI {
|
|
|
961
1002
|
* const mult = getPillRealmMultiplier('coreFormation');
|
|
962
1003
|
*/
|
|
963
1004
|
getPillRealmMultiplier: (realm: Realm) => number;
|
|
1005
|
+
/**
|
|
1006
|
+
* Wrap text in a colored span for event text.
|
|
1007
|
+
* @param text - Text to color
|
|
1008
|
+
* @param col - CSS color value
|
|
1009
|
+
* @returns HTML string with colored text
|
|
1010
|
+
* @example
|
|
1011
|
+
* col('Important!', '#ff0000');
|
|
1012
|
+
*/
|
|
1013
|
+
col: (text: string | number, col: string) => string;
|
|
1014
|
+
/**
|
|
1015
|
+
* Format text as a location name (purple color).
|
|
1016
|
+
* @param text - Location name
|
|
1017
|
+
* @returns HTML string with location styling
|
|
1018
|
+
* @example
|
|
1019
|
+
* loc('Liang Tiao Village');
|
|
1020
|
+
*/
|
|
1021
|
+
loc: (text: string | number) => string;
|
|
1022
|
+
/**
|
|
1023
|
+
* Format a realm with optional progress as styled text.
|
|
1024
|
+
* @param realm - Cultivation realm
|
|
1025
|
+
* @param progress - Optional realm progress
|
|
1026
|
+
* @returns HTML string with realm styling
|
|
1027
|
+
* @example
|
|
1028
|
+
* rlm('coreFormation', 'Middle');
|
|
1029
|
+
*/
|
|
1030
|
+
rlm: (realm: Realm, progress?: RealmProgress) => string;
|
|
1031
|
+
/**
|
|
1032
|
+
* Format a number with styling for event text.
|
|
1033
|
+
* @param number - Number to format
|
|
1034
|
+
* @returns HTML string with number styling
|
|
1035
|
+
* @example
|
|
1036
|
+
* num(1000); // Returns formatted "1,000" with styling
|
|
1037
|
+
*/
|
|
1038
|
+
num: (number: string | number) => string;
|
|
1039
|
+
/**
|
|
1040
|
+
* Format text as a buff name (pink color).
|
|
1041
|
+
* @param buff - Buff name
|
|
1042
|
+
* @returns HTML string with buff styling
|
|
1043
|
+
* @example
|
|
1044
|
+
* buf('Empowered Blood');
|
|
1045
|
+
*/
|
|
1046
|
+
buf: (buff: string) => string;
|
|
1047
|
+
/**
|
|
1048
|
+
* Format text as an item name (pink color).
|
|
1049
|
+
* @param item - Item name
|
|
1050
|
+
* @returns HTML string with item styling
|
|
1051
|
+
* @example
|
|
1052
|
+
* itm('Spirit Core (III)');
|
|
1053
|
+
*/
|
|
1054
|
+
itm: (item: string) => string;
|
|
1055
|
+
/**
|
|
1056
|
+
* Format text as a character name (green color).
|
|
1057
|
+
* @param text - Character name
|
|
1058
|
+
* @returns HTML string with character styling
|
|
1059
|
+
* @example
|
|
1060
|
+
* char('Elder Zhang');
|
|
1061
|
+
*/
|
|
1062
|
+
char: (text: string | number) => string;
|
|
1063
|
+
/**
|
|
1064
|
+
* Format a technique element with styling.
|
|
1065
|
+
* @param element - Technique element type
|
|
1066
|
+
* @returns HTML string with element styling
|
|
1067
|
+
* @example
|
|
1068
|
+
* elem('fire');
|
|
1069
|
+
*/
|
|
1070
|
+
elem: (element: TechniqueElement) => string;
|
|
1071
|
+
/**
|
|
1072
|
+
* Generate the flags that should be set when skipping tutorials.
|
|
1073
|
+
* For each tutorial: sets {name}, {name}Started, {name}Completed
|
|
1074
|
+
* For each trigger: sets {name}, {name}Started
|
|
1075
|
+
* Use this when creating alternative starts to ensure proper skip behavior.
|
|
1076
|
+
* @param tutorials - Array of tutorials
|
|
1077
|
+
* @param triggers - Array of triggered events
|
|
1078
|
+
* @returns Record of flag names to values (all set to 1)
|
|
1079
|
+
* @example
|
|
1080
|
+
* const skipFlags = generateSkipTutorialFlags(myTutorials, myTriggers);
|
|
1081
|
+
* // Returns { 'tutorialName': 1, 'tutorialNameStarted': 1, 'tutorialNameCompleted': 1, ... }
|
|
1082
|
+
*/
|
|
1083
|
+
generateSkipTutorialFlags: (tutorials: Tutorial[], triggers: TriggeredEvent[]) => Record<string, number>;
|
|
964
1084
|
};
|
|
965
1085
|
hooks: {
|
|
966
1086
|
/**
|
package/dist/reduxState.d.ts
CHANGED
|
@@ -319,6 +319,12 @@ export interface NewGameState {
|
|
|
319
319
|
export interface GameDataState {
|
|
320
320
|
flags: Record<string, number>;
|
|
321
321
|
mapExploration: Record<string, number>;
|
|
322
|
+
/**
|
|
323
|
+
* The root location name for location discovery.
|
|
324
|
+
* Defaults to "Nine Mountain Sect" if not set.
|
|
325
|
+
* Can be changed by alternative starts.
|
|
326
|
+
*/
|
|
327
|
+
discoveryRoot?: string;
|
|
322
328
|
}
|
|
323
329
|
export interface HistoryItem {
|
|
324
330
|
text: string;
|
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", "
|
|
6
|
+
export declare const combatStatistics: readonly ["maxhp", "hp", "maxbarrier", "barrier", "maxtoxicity", "toxicity", "resistance", "pillsPerRound", "itemEffectiveness", "power", "artefactpower", "critchance", "defense", "dr", "barrierMitigation", "lifesteal", "critmultiplier", "vulnerability", "weakness", "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];
|
|
@@ -63,6 +63,11 @@ export interface Scaling {
|
|
|
63
63
|
scaling?: 'stacks' | 'consumed' | string;
|
|
64
64
|
eqn?: string;
|
|
65
65
|
additiveEqn?: string;
|
|
66
|
+
customScaling?: {
|
|
67
|
+
multiplier: number;
|
|
68
|
+
scaling: 'stacks' | 'consumed' | string;
|
|
69
|
+
upgradeKey?: string;
|
|
70
|
+
};
|
|
66
71
|
max?: Scaling;
|
|
67
72
|
divideByStanceLength?: boolean;
|
|
68
73
|
upgradeKey?: string;
|
package/dist/stat.js
CHANGED
|
@@ -50,8 +50,9 @@ export const combatStatistics = [
|
|
|
50
50
|
'dr',
|
|
51
51
|
'barrierMitigation',
|
|
52
52
|
'lifesteal',
|
|
53
|
-
'
|
|
53
|
+
'critmultiplier',
|
|
54
54
|
'vulnerability',
|
|
55
|
+
'weakness',
|
|
55
56
|
'fistBoost',
|
|
56
57
|
'blossomBoost',
|
|
57
58
|
'weaponBoost',
|
|
@@ -106,8 +107,9 @@ export const combatStatToName = {
|
|
|
106
107
|
dr: 'Damage Resistance',
|
|
107
108
|
barrierMitigation: 'Barrier Effectiveness',
|
|
108
109
|
lifesteal: 'Life Steal',
|
|
109
|
-
|
|
110
|
+
critmultiplier: 'Crit Multiplier',
|
|
110
111
|
vulnerability: 'Vulnerability',
|
|
112
|
+
weakness: 'Weakness',
|
|
111
113
|
fistBoost: 'Fist Boost',
|
|
112
114
|
blossomBoost: 'Blossom Boost',
|
|
113
115
|
weaponBoost: 'Weapon Boost',
|
|
@@ -149,9 +151,10 @@ export const combatStatToDescription = {
|
|
|
149
151
|
defense: 'Your resistance to damage.',
|
|
150
152
|
dr: '',
|
|
151
153
|
lifesteal: '',
|
|
152
|
-
critchance: 'Your chance to get a critical effect
|
|
153
|
-
|
|
154
|
+
critchance: 'Your chance to get a critical effect on damage, healing, and barrier. Crit chance over 100% converts to bonus crit damage at a 1:3 ratio.',
|
|
155
|
+
critmultiplier: '',
|
|
154
156
|
vulnerability: '',
|
|
157
|
+
weakness: '',
|
|
155
158
|
artefactpower: "The strength of your artefact's techniques and your Formation Parts.",
|
|
156
159
|
fistBoost: '',
|
|
157
160
|
blossomBoost: '',
|
|
@@ -202,7 +205,7 @@ export const craftingStatToName = {
|
|
|
202
205
|
export const craftingStatToDescription = {
|
|
203
206
|
maxtoxicity: 'The quantity of pills you can take before your body becomes unable to digest any more.',
|
|
204
207
|
toxicity: '',
|
|
205
|
-
critchance: 'Your chance to get a critical effect on increasing perfection or completion. Crit chance over 100%
|
|
208
|
+
critchance: 'Your chance to get a critical effect on increasing perfection or completion. Crit chance over 100% converts to bonus crit multiplier at a 1:3 ratio.',
|
|
206
209
|
maxpool: 'The amount of <b>Qi</b> you have available during crafting to spend on crafting actions.',
|
|
207
210
|
pool: '',
|
|
208
211
|
control: 'The <b>perfection</b> your refinement actions impart during crafting, making it easier to perfect a recipe.',
|
|
@@ -251,7 +254,7 @@ export const physicalStatToDescription = {
|
|
|
251
254
|
muscles: 'Your ability to use your body to project force. Affects your crafting <b>Qi Intensity</b> and combat <b>Power</b>.',
|
|
252
255
|
dantian: 'Your ability to store and channel Qi. Affects your combat <b>Max Barrier</b>, crafting <b>Max Qi Pool</b>, <b>Qi Absorption</b>, and <b>Technique Mastery Points</b>.',
|
|
253
256
|
meridians: 'Your ability to control Qi. Affects crafting <b>Qi Control</b> and combat <b>Artefact Power</b>.',
|
|
254
|
-
eyes: 'Your ability to perceive the fine details in the world around you. Affects <b>Critical Chance</b> and <b>Critical
|
|
257
|
+
eyes: 'Your ability to perceive the fine details in the world around you. Affects <b>Critical Chance</b> and <b>Critical Multiplier</b>.',
|
|
255
258
|
};
|
|
256
259
|
export const reputationDescription = 'Reputation affects a factions attitude towards you. High reputation reduces prices, unlocks quests, and allows the purchase of valuable items.';
|
|
257
260
|
export const reputationPerTier = 5;
|
package/dist/technique.d.ts
CHANGED
|
@@ -62,6 +62,7 @@ interface BaseTechniqueEffect {
|
|
|
62
62
|
kind: TechniqueEffectKind;
|
|
63
63
|
condition?: TechniqueCondition;
|
|
64
64
|
triggerKey?: string;
|
|
65
|
+
isAdditionalTooltip?: boolean;
|
|
65
66
|
}
|
|
66
67
|
interface BuffSelfTechniqueEffect extends BaseTechniqueEffect {
|
|
67
68
|
kind: 'buffSelf';
|
|
@@ -139,7 +140,7 @@ interface TriggerEffect extends BaseTechniqueEffect {
|
|
|
139
140
|
amount: Scaling;
|
|
140
141
|
triggerTooltip?: string;
|
|
141
142
|
}
|
|
142
|
-
export type TechniqueMastery = PowerTechniqueMastery | EffectTechniqueMastery | CritChanceTechniqueMastery |
|
|
143
|
+
export type TechniqueMastery = PowerTechniqueMastery | EffectTechniqueMastery | CritChanceTechniqueMastery | CritMultiplierTechniqueMastery | UpgradeTechniqueMastery;
|
|
143
144
|
interface BaseTechniqueMastery {
|
|
144
145
|
condition?: TechniqueCondition;
|
|
145
146
|
tooltip?: string;
|
|
@@ -153,8 +154,8 @@ interface CritChanceTechniqueMastery extends BaseTechniqueMastery {
|
|
|
153
154
|
kind: 'critchance';
|
|
154
155
|
percentage: number;
|
|
155
156
|
}
|
|
156
|
-
interface
|
|
157
|
-
kind: '
|
|
157
|
+
interface CritMultiplierTechniqueMastery extends BaseTechniqueMastery {
|
|
158
|
+
kind: 'critmultiplier';
|
|
158
159
|
percentage: number;
|
|
159
160
|
}
|
|
160
161
|
interface EffectTechniqueMastery extends BaseTechniqueMastery {
|