afnm-types 0.6.52 → 0.6.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GameScreen.d.ts +1 -0
- package/dist/avatarEffects.d.ts +4 -3
- package/dist/avatarEffects.js +77 -76
- package/dist/buff.d.ts +6 -0
- package/dist/cli/extract-mod-translations/index.js +1 -1
- package/dist/cli/extract-translations/reporters.js +34 -32
- package/dist/components.d.ts +19 -1
- package/dist/craftingState.d.ts +1 -1
- package/dist/dualCultivation.d.ts +6 -6
- package/dist/dualCultivation.js +3 -3
- package/dist/entity.js +8 -1
- package/dist/event.d.ts +5 -1
- package/dist/gameVersion.d.ts +1 -1
- package/dist/gameVersion.js +1 -1
- package/dist/item.d.ts +2 -9
- package/dist/keybindings.d.ts +2 -2
- package/dist/keybindings.js +8 -0
- package/dist/mod.d.ts +266 -45
- package/dist/reduxState.d.ts +2 -1
- package/dist/reforge.d.ts +2 -0
- package/dist/soulShardDelve.d.ts +65 -157
- package/dist/soulShardDelve.js +7 -75
- package/dist/technique.d.ts +5 -0
- package/package.json +1 -1
package/dist/GameScreen.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
1
|
export type GameScreen = 'location' | 'recipe' | 'mission' | 'craftingHall' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'reforge' | 'pillarGrid' | 'fallenStar' | 'trainingGround' | 'tenThousandFlames' | 'lifeScreen' | 'soulShardDelve' | 'enchantmentShop' | 'challengeBoard';
|
|
2
|
+
export type ScreenType = GameScreen | 'newgame' | 'combat' | 'crafting' | 'dualCultivation' | 'event' | 'auction' | 'mysticalRegion' | 'tournament' | 'house' | 'guild' | 'stoneCutting' | 'fallenStar' | 'soulShardDelve';
|
package/dist/avatarEffects.d.ts
CHANGED
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
export type AvatarEffectId = 'glitch';
|
|
11
11
|
export interface AvatarEffectShader {
|
|
12
12
|
/**
|
|
13
|
-
* Fragment shader source
|
|
14
|
-
*
|
|
15
|
-
* u_canvasAspect
|
|
13
|
+
* Fragment shader source (GLSL ES 3.00, must begin with `#version 300 es`).
|
|
14
|
+
* Must accept the same uniforms as the base shader: u_texA, u_texB, u_mix,
|
|
15
|
+
* u_aspectA, u_aspectB, u_canvasAspect, u_time (seconds since effect started).
|
|
16
|
+
* Use `in vec2 v_uv` and `out vec4 fragColor` instead of the ES 1.00 forms.
|
|
16
17
|
*/
|
|
17
18
|
fragSrc: string;
|
|
18
19
|
}
|
package/dist/avatarEffects.js
CHANGED
|
@@ -11,82 +11,83 @@
|
|
|
11
11
|
// Replicates the hand-authored glitch art style: strong persistent chromatic
|
|
12
12
|
// aberration (cyan/magenta fringing always visible), periodic brightness
|
|
13
13
|
// washout, and horizontal scanline tears during burst events.
|
|
14
|
-
const GLITCH_FRAG_SRC =
|
|
15
|
-
precision mediump float;
|
|
16
|
-
|
|
17
|
-
uniform sampler2D u_texA;
|
|
18
|
-
uniform sampler2D u_texB;
|
|
19
|
-
uniform float u_mix;
|
|
20
|
-
uniform float u_aspectA;
|
|
21
|
-
uniform float u_aspectB;
|
|
22
|
-
uniform float u_canvasAspect;
|
|
23
|
-
uniform float u_time;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
vec2
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
float
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
float
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
float
|
|
58
|
-
float
|
|
59
|
-
float
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
float
|
|
72
|
-
float
|
|
73
|
-
float
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
float
|
|
78
|
-
float
|
|
79
|
-
float
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
//
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
14
|
+
const GLITCH_FRAG_SRC = `#version 300 es
|
|
15
|
+
precision mediump float;
|
|
16
|
+
in vec2 v_uv;
|
|
17
|
+
uniform sampler2D u_texA;
|
|
18
|
+
uniform sampler2D u_texB;
|
|
19
|
+
uniform float u_mix;
|
|
20
|
+
uniform float u_aspectA;
|
|
21
|
+
uniform float u_aspectB;
|
|
22
|
+
uniform float u_canvasAspect;
|
|
23
|
+
uniform float u_time;
|
|
24
|
+
out vec4 fragColor;
|
|
25
|
+
|
|
26
|
+
float hash(float n) {
|
|
27
|
+
return fract(sin(n) * 43758.5453);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
vec4 sampleContain(sampler2D tex, vec2 uv, float texAspect) {
|
|
31
|
+
float rel = texAspect / u_canvasAspect;
|
|
32
|
+
vec2 scale;
|
|
33
|
+
if (rel > 1.0) {
|
|
34
|
+
scale = vec2(1.0, 1.0 / rel);
|
|
35
|
+
} else {
|
|
36
|
+
scale = vec2(rel, 1.0);
|
|
37
|
+
}
|
|
38
|
+
vec2 offset = (1.0 - scale) * 0.5;
|
|
39
|
+
vec2 mapped = (uv - offset) / scale;
|
|
40
|
+
if (mapped.x < 0.0 || mapped.x > 1.0 || mapped.y < 0.0 || mapped.y > 1.0) {
|
|
41
|
+
return vec4(0.0);
|
|
42
|
+
}
|
|
43
|
+
return texture(tex, mapped);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
void main() {
|
|
47
|
+
vec2 uv = v_uv;
|
|
48
|
+
|
|
49
|
+
// Glitch burst timing — ~0.8 event slots per second, 35% chance each.
|
|
50
|
+
float eventT = floor(u_time * 0.8);
|
|
51
|
+
float isGlitching = step(0.65, hash(eventT * 1.618));
|
|
52
|
+
// Sharp onset, slow decay — the burst lingers before fading.
|
|
53
|
+
float slotFrac = fract(u_time * 0.8);
|
|
54
|
+
float decay = (1.0 - smoothstep(0.1, 0.9, slotFrac)) * isGlitching;
|
|
55
|
+
|
|
56
|
+
// Band-based horizontal displacement (scanline tearing) during bursts.
|
|
57
|
+
float band = floor(uv.y * 24.0);
|
|
58
|
+
float bandActive = step(0.55, hash(band + eventT * 23.7));
|
|
59
|
+
float bandShift = (hash(band * 5.2 + eventT * 7.1) * 2.0 - 1.0) * 0.025;
|
|
60
|
+
float shift = bandShift * bandActive * decay;
|
|
61
|
+
|
|
62
|
+
// Occasional large block tears.
|
|
63
|
+
float bigTear = step(0.92, hash(band * 3.7 + eventT * 11.3));
|
|
64
|
+
shift += (hash(band * 9.1 + eventT * 4.7) * 2.0 - 1.0) * 0.08 * bigTear * decay;
|
|
65
|
+
|
|
66
|
+
vec2 shiftedUv = vec2(uv.x + shift, uv.y);
|
|
67
|
+
|
|
68
|
+
// Chromatic aberration: strong baseline always present, amplified by bursts.
|
|
69
|
+
float aberr = 0.012 + 0.018 * decay;
|
|
70
|
+
|
|
71
|
+
float rA = sampleContain(u_texA, vec2(shiftedUv.x + aberr, shiftedUv.y), u_aspectA).r;
|
|
72
|
+
float gA = sampleContain(u_texA, shiftedUv, u_aspectA).g;
|
|
73
|
+
float bA = sampleContain(u_texA, vec2(shiftedUv.x - aberr, shiftedUv.y), u_aspectA).b;
|
|
74
|
+
float aA = sampleContain(u_texA, shiftedUv, u_aspectA).a;
|
|
75
|
+
vec4 colA = vec4(rA, gA, bA, aA);
|
|
76
|
+
|
|
77
|
+
float rB = sampleContain(u_texB, vec2(shiftedUv.x + aberr, shiftedUv.y), u_aspectB).r;
|
|
78
|
+
float gB = sampleContain(u_texB, shiftedUv, u_aspectB).g;
|
|
79
|
+
float bB = sampleContain(u_texB, vec2(shiftedUv.x - aberr, shiftedUv.y), u_aspectB).b;
|
|
80
|
+
float aB = sampleContain(u_texB, shiftedUv, u_aspectB).a;
|
|
81
|
+
vec4 colB = vec4(rB, gB, bB, aB);
|
|
82
|
+
|
|
83
|
+
vec4 col = mix(colA, colB, u_mix);
|
|
84
|
+
|
|
85
|
+
// Brightness washout during bursts — push toward overexposed white,
|
|
86
|
+
// scaled by alpha so transparent edges don't bloom.
|
|
87
|
+
float blowout = decay * 0.45;
|
|
88
|
+
col.rgb = mix(col.rgb, vec3(1.0), blowout * col.a);
|
|
89
|
+
|
|
90
|
+
fragColor = col;
|
|
90
91
|
}`;
|
|
91
92
|
// ─── Registry ─────────────────────────────────────────────────────────────────
|
|
92
93
|
/**
|
package/dist/buff.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { CombatStatistic, Scaling } from './stat';
|
|
|
4
4
|
import type { DamageType } from './DamageType';
|
|
5
5
|
import type { CombatEntity } from './entity';
|
|
6
6
|
import { AvatarEffectId } from './avatarEffects';
|
|
7
|
+
import type { EffectTargeting } from './technique';
|
|
7
8
|
export type TechniqueCondition = ChanceTechniqueCondition | BuffTechniqueCondition | HpTechniqueCondition | ConditionTechniqueCondition | InventoryItemTechniqueCondition;
|
|
8
9
|
interface BaseTechniqueCondition {
|
|
9
10
|
/**
|
|
@@ -110,6 +111,7 @@ export interface Buff {
|
|
|
110
111
|
trigger?: TechniqueCondition;
|
|
111
112
|
damageModifier: DamageModifier;
|
|
112
113
|
effects?: BuffEffect[];
|
|
114
|
+
afterBarrier?: boolean;
|
|
113
115
|
}[];
|
|
114
116
|
/** Amplifies outgoing damage/barrier/heal effects. Runs before the effect is applied. */
|
|
115
117
|
techniqueAmplifierEffects?: {
|
|
@@ -339,11 +341,13 @@ interface HealEffect extends BaseBuff {
|
|
|
339
341
|
kind: 'heal';
|
|
340
342
|
amount: Scaling;
|
|
341
343
|
hits?: Scaling;
|
|
344
|
+
targeting?: EffectTargeting;
|
|
342
345
|
}
|
|
343
346
|
interface BarrierEffect extends BaseBuff {
|
|
344
347
|
kind: 'barrier';
|
|
345
348
|
amount: Scaling;
|
|
346
349
|
hits?: Scaling;
|
|
350
|
+
targeting?: EffectTargeting;
|
|
347
351
|
}
|
|
348
352
|
interface CreateBuffSelfEffect extends BaseBuff {
|
|
349
353
|
kind: 'buffSelf';
|
|
@@ -351,6 +355,7 @@ interface CreateBuffSelfEffect extends BaseBuff {
|
|
|
351
355
|
buff: Buff;
|
|
352
356
|
silent?: boolean;
|
|
353
357
|
hideBuff?: boolean;
|
|
358
|
+
targeting?: EffectTargeting;
|
|
354
359
|
}
|
|
355
360
|
interface ConsumeBuffSelfEffect extends BaseBuff {
|
|
356
361
|
kind: 'consumeSelf';
|
|
@@ -424,6 +429,7 @@ interface RepairEffect extends BaseBuff {
|
|
|
424
429
|
group: string;
|
|
425
430
|
/** Which matching buff(s) to repair: 'all', 'lowestHealth', or 'highestHealth' */
|
|
426
431
|
rule: RepairRule;
|
|
432
|
+
targeting?: EffectTargeting;
|
|
427
433
|
}
|
|
428
434
|
interface ConsumeInventoryItemEffect extends BaseBuff {
|
|
429
435
|
kind: 'consumeInventoryItem';
|
|
@@ -326,7 +326,7 @@ async function main() {
|
|
|
326
326
|
console.log(`Template-ready strings : ${templateStrings.length}`);
|
|
327
327
|
// Generate hierarchical template
|
|
328
328
|
console.log('\nGenerating translation template...');
|
|
329
|
-
const template = (0, reporters_js_1.generateHierarchicalTemplate)(templateStrings);
|
|
329
|
+
const template = (0, reporters_js_1.generateHierarchicalTemplate)(templateStrings, undefined, undefined, false);
|
|
330
330
|
const sortedTemplate = deepSortObject(template);
|
|
331
331
|
const stringCount = countHierarchicalStrings(sortedTemplate);
|
|
332
332
|
console.log(` ${stringCount} unique translatable entries found.`);
|
|
@@ -243,7 +243,7 @@ function findMinimalUniquePaths(paths) {
|
|
|
243
243
|
* - If different texts have same simple field -> use minimal unique path prefix
|
|
244
244
|
* - If text is unique for its simple field -> just use simple field
|
|
245
245
|
*/
|
|
246
|
-
function generateHierarchicalTemplate(allStrings, techniqueTooltipsData, textsRequiringContext) {
|
|
246
|
+
function generateHierarchicalTemplate(allStrings, techniqueTooltipsData, textsRequiringContext, includeRootPatterns = true) {
|
|
247
247
|
const template = {};
|
|
248
248
|
const intermediate = new Map();
|
|
249
249
|
// Helper to add entry to intermediate structure
|
|
@@ -637,37 +637,39 @@ function generateHierarchicalTemplate(allStrings, techniqueTooltipsData, textsRe
|
|
|
637
637
|
}
|
|
638
638
|
}
|
|
639
639
|
}
|
|
640
|
-
// Add hardcoded patterns to a special category
|
|
641
|
-
if (
|
|
642
|
-
template['_patterns']
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
template['_patterns']['hardcoded']
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
template['_patterns']['conditions']
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
template['_patterns']['requirements']
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
640
|
+
// Add hardcoded patterns to a special category (only when extracting for the game, not for mods)
|
|
641
|
+
if (includeRootPatterns) {
|
|
642
|
+
if (!template['_patterns']) {
|
|
643
|
+
template['_patterns'] = {};
|
|
644
|
+
}
|
|
645
|
+
if (!template['_patterns']['hardcoded']) {
|
|
646
|
+
template['_patterns']['hardcoded'] = {};
|
|
647
|
+
}
|
|
648
|
+
// Add stack-related strings
|
|
649
|
+
template['_patterns']['hardcoded']['[word] stack'] = '';
|
|
650
|
+
template['_patterns']['hardcoded']['[word] stacks'] = '';
|
|
651
|
+
// Add dynamic template patterns
|
|
652
|
+
for (const tmpl of config_js_1.HARDCODED_TEMPLATE_PATTERNS) {
|
|
653
|
+
template['_patterns']['hardcoded'][`[template] ${tmpl}`] = '';
|
|
654
|
+
}
|
|
655
|
+
// Add condition words
|
|
656
|
+
if (!template['_patterns']['conditions']) {
|
|
657
|
+
template['_patterns']['conditions'] = {};
|
|
658
|
+
}
|
|
659
|
+
for (const word of config_js_1.CONDITION_WORDS) {
|
|
660
|
+
template['_patterns']['conditions'][`[word] ${word}`] = '';
|
|
661
|
+
}
|
|
662
|
+
// Add condition template strings from describeTechniqueCondition.ts and describeCraftingTechniqueCondition.ts
|
|
663
|
+
for (const tmpl of config_js_1.CONDITION_TEMPLATES) {
|
|
664
|
+
template['_patterns']['conditions'][`[condition] ${tmpl}`] = '';
|
|
665
|
+
}
|
|
666
|
+
// Add requirement strings
|
|
667
|
+
if (!template['_patterns']['requirements']) {
|
|
668
|
+
template['_patterns']['requirements'] = {};
|
|
669
|
+
}
|
|
670
|
+
for (const reqStr of config_js_1.REQUIREMENT_STRINGS) {
|
|
671
|
+
template['_patterns']['requirements'][`[requirement] ${reqStr}`] = '';
|
|
672
|
+
}
|
|
671
673
|
}
|
|
672
674
|
return template;
|
|
673
675
|
}
|
package/dist/components.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Breakpoint, ButtonProps, IconButtonProps } from '@mui/material';
|
|
2
|
-
import type { ReactNode, PropsWithChildren } from 'react';
|
|
2
|
+
import type { ReactNode, PropsWithChildren, ReactElement } from 'react';
|
|
3
3
|
import type { SoundEffectName } from './audio';
|
|
4
4
|
import type { ScreenEffectType } from './ScreenEffectType';
|
|
5
5
|
import type React from 'react';
|
|
@@ -55,4 +55,22 @@ export interface BackgroundImageProps {
|
|
|
55
55
|
}
|
|
56
56
|
export type BackgroundImageFC = React.FC<BackgroundImageProps>;
|
|
57
57
|
export type MemoBackgroundImageFC = React.NamedExoticComponent<BackgroundImageProps>;
|
|
58
|
+
export interface GameTooltipProps {
|
|
59
|
+
provider: () => ReactNode;
|
|
60
|
+
children: ReactElement;
|
|
61
|
+
flipped?: boolean;
|
|
62
|
+
disabled?: boolean;
|
|
63
|
+
minimal?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface GameTooltipBoxProps {
|
|
66
|
+
isSecondary?: boolean;
|
|
67
|
+
isAux?: boolean;
|
|
68
|
+
removeWidthLimit?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface TooltipLineProps {
|
|
71
|
+
children?: React.ReactNode;
|
|
72
|
+
}
|
|
73
|
+
export type GameTooltipFC = React.FC<GameTooltipProps>;
|
|
74
|
+
export type GameTooltipBoxFC = React.FC<PropsWithChildren<GameTooltipBoxProps>>;
|
|
75
|
+
export type TooltipLineFC = React.ComponentType<TooltipLineProps>;
|
|
58
76
|
export {};
|
package/dist/craftingState.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export interface HarmonyData {
|
|
|
27
27
|
inscribedPatterns?: InscribedPatternsData;
|
|
28
28
|
resonance?: ResonanceData;
|
|
29
29
|
recommendedTechniqueTypes: CraftingTechniqueType[];
|
|
30
|
-
additionalData?:
|
|
30
|
+
additionalData?: unknown;
|
|
31
31
|
}
|
|
32
32
|
export interface CraftingEffectTracking {
|
|
33
33
|
icon: string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Translatable } from './translatable';
|
|
2
|
-
declare const
|
|
3
|
-
export type IntimateStat = (typeof
|
|
4
|
-
declare const
|
|
5
|
-
export type IntimateResource = (typeof
|
|
6
|
-
declare const
|
|
7
|
-
export type IntimateTechniqueType = (typeof
|
|
2
|
+
declare const _intimateStats: readonly ["satisfaction", "energy", "painThreshold"];
|
|
3
|
+
export type IntimateStat = (typeof _intimateStats)[number];
|
|
4
|
+
declare const _intimateResources: readonly ["pain", "harmony", "excitement", "rhythm"];
|
|
5
|
+
export type IntimateResource = (typeof _intimateResources)[number];
|
|
6
|
+
declare const _intimateTechniqueTypes: readonly ["rough", "tender", "passionate"];
|
|
7
|
+
export type IntimateTechniqueType = (typeof _intimateTechniqueTypes)[number];
|
|
8
8
|
export declare const intimateTechniqueTypeToName: Record<IntimateTechniqueType, string>;
|
|
9
9
|
export declare const intimateResourceToName: Record<IntimateResource, string>;
|
|
10
10
|
export declare const dualCultivationCompletionStateToName: Record<string, string>;
|
package/dist/dualCultivation.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
1
|
+
const _intimateStats = ['satisfaction', 'energy', 'painThreshold'];
|
|
2
|
+
const _intimateResources = ['pain', 'harmony', 'excitement', 'rhythm'];
|
|
3
|
+
const _intimateTechniqueTypes = ['rough', 'tender', 'passionate'];
|
|
4
4
|
export const intimateTechniqueTypeToName = {
|
|
5
5
|
rough: 'Rough',
|
|
6
6
|
tender: 'Tender',
|
package/dist/entity.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
export const entityTypes = [
|
|
1
|
+
export const entityTypes = [
|
|
2
|
+
'Player',
|
|
3
|
+
'Lifeform',
|
|
4
|
+
'Enemy',
|
|
5
|
+
'PlayerParty',
|
|
6
|
+
'EnemyParty',
|
|
7
|
+
'System',
|
|
8
|
+
];
|
|
2
9
|
export const sexes = ['male', 'female'];
|
|
3
10
|
export const sexToName = {
|
|
4
11
|
male: 'Male',
|
package/dist/event.d.ts
CHANGED
|
@@ -86,7 +86,7 @@ export interface ChoiceStepChoice {
|
|
|
86
86
|
hideIfDisabled?: boolean;
|
|
87
87
|
children: EventStep[];
|
|
88
88
|
}
|
|
89
|
-
export type EventChoiceCondition = RealmCondition | PhysicalStatisticCondition | SocialStatisticCondition | ItemCondition | BuffCondition | MoneyCondition | FavourCondition | MultiCondition | AffinityCondition | QiCondition | ReputationCondition | HealthCondition | InjuredCondition;
|
|
89
|
+
export type EventChoiceCondition = RealmCondition | PhysicalStatisticCondition | SocialStatisticCondition | ItemCondition | BuffCondition | MoneyCondition | FavourCondition | MultiCondition | AffinityCondition | QiCondition | ReputationCondition | HealthCondition | InjuredCondition | SexualityCondition;
|
|
90
90
|
export interface RealmCondition {
|
|
91
91
|
kind: 'realm';
|
|
92
92
|
realm: Realm;
|
|
@@ -106,6 +106,10 @@ interface InjuredCondition {
|
|
|
106
106
|
kind: 'injured';
|
|
107
107
|
injured: boolean;
|
|
108
108
|
}
|
|
109
|
+
interface SexualityCondition {
|
|
110
|
+
kind: 'sexuality';
|
|
111
|
+
targetSex: 'male' | 'female';
|
|
112
|
+
}
|
|
109
113
|
interface SocialStatisticCondition {
|
|
110
114
|
kind: 'socialStatistic';
|
|
111
115
|
stat: SocialStatistic;
|
package/dist/gameVersion.d.ts
CHANGED
package/dist/gameVersion.js
CHANGED
package/dist/item.d.ts
CHANGED
|
@@ -7,12 +7,12 @@ import type { TechniqueElement } from './element';
|
|
|
7
7
|
import type { EnemyEntity, StoredRule } from './entity';
|
|
8
8
|
import type { Room } from './house';
|
|
9
9
|
import type { RegionContentType } from './mysticalRegion';
|
|
10
|
-
import type { AbsorberConfig } from './soulShardDelve';
|
|
11
10
|
import type { Rarity } from './rarity';
|
|
12
11
|
import type { Realm, RealmProgress } from './realm';
|
|
13
12
|
import type { RecipeDifficulty } from './RecipeDifficulty';
|
|
14
13
|
import type { CombatStatistic, CombatStatsMap, CraftingStatistic, CraftingStatsMap, PhysicalStatistic, Scaling, SocialStatistic } from './stat';
|
|
15
14
|
import type { Technique, TechniqueEffect } from './technique';
|
|
15
|
+
import { DelveRoom } from './soulShardDelve';
|
|
16
16
|
export declare const itemKinds: readonly ["clothing", "talisman", "artefact", "mount", "cauldron", "flame", "upgrade", "fruit", "elixir", "recipe", "technique", "action", "transport_seal", "enchantment", "pill", "reagent", "concoction", "consumable", "recuperation", "formation", "breakthrough", "pillar_shard", "material", "flare", "mystical_key", "condensation_art", "blueprint", "trophy", "treasure", "token", "life_essence", "device", "manual", "pillar_pattern", "local_map"];
|
|
17
17
|
export type ItemKind = (typeof itemKinds)[number];
|
|
18
18
|
export declare const itemKindToName: {
|
|
@@ -456,14 +456,7 @@ export interface PillarShardItem extends ItemBase {
|
|
|
456
456
|
kind: 'pillar_shard';
|
|
457
457
|
tooltip: Translatable;
|
|
458
458
|
maxInstances?: number;
|
|
459
|
-
|
|
460
|
-
* Shard subtype. 'soul' shards are used in soul shard delves — they have routing
|
|
461
|
-
* and a room type but no combat/crafting effects. Omit for normal pillar shards.
|
|
462
|
-
*/
|
|
463
|
-
shardSubtype?: 'soul';
|
|
464
|
-
/** Absorber config for soul shard delves. Hardcoded on soul shards; generated
|
|
465
|
-
* from the shard name hash for pillar shards when absent. */
|
|
466
|
-
absorberConfig?: AbsorberConfig;
|
|
459
|
+
delveRoomConfig?: DelveRoom;
|
|
467
460
|
variants?: PillarShardVariant[];
|
|
468
461
|
stability?: number;
|
|
469
462
|
portal?: {
|
package/dist/keybindings.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type KeybindingCategory = 'general' | 'navigation' | 'ui' | 'world' | 'combat' | 'crafting' | 'dialogs' | 'gamepad';
|
|
2
|
-
export type KeybindingAction = 'confirm' | 'cancel' | 'pause' | 'alternateConfirm' | 'moveUp' | 'moveDown' | 'moveLeft' | 'moveRight' | 'openInventory' | 'openQuests' | 'openCharacterStats' | 'openTechniques' | 'openCalendar' | 'openWorldMap' | 'combatSelectStance0' | 'combatSelectStance1' | 'combatSelectStance2' | 'combatSelectStance3' | 'combatSelectStance4' | 'combatSelectStance5' | 'combatSelectStance6' | 'combatSelectStance7' | 'combatSelectStance8' | 'combatSelectStance9' | 'combatToggleSpeed' | 'combatToggleLog' | 'combatShowStats' | 'combatAutoBattle' | 'combatUseItem' | 'craftingAction1' | 'craftingAction2' | 'craftingAction3' | 'craftingAction4' | 'craftingAction5' | 'craftingAction6' | 'craftingAction7' | 'craftingAction8' | 'craftingAction9' | 'craftingAction10' | 'craftingAction11' | 'craftingAction12' | 'craftingAction13' | 'craftingAction14' | 'craftingAction15' | 'craftingAction16' | 'craftingAction17' | 'craftingAction18' | 'craftingAction19' | 'craftingAction20' | 'craftingAction21' | 'craftingAction22' | 'craftingAction23' | 'craftingAction24' | 'craftingAction25' | 'craftingAction26' | 'craftingAction27' | 'craftingAction28' | 'craftingAction29' | 'craftingAction30' | 'craftingAction31' | 'craftingAction32' | 'craftingAction33' | 'craftingAction34' | 'craftingAction35' | 'craftingAction36' | 'craftingAction37' | 'craftingAction38' | 'craftingAction39' | 'craftingAction40' | 'craftingAction41' | 'craftingAction42' | 'craftingAction43' | 'craftingAction44' | 'craftingAction45' | 'craftingAction46' | 'craftingAction47' | 'craftingAction48' | 'craftingAction49' | 'craftingAction50' | 'dialogChoice1' | 'dialogChoice2' | 'dialogChoice3' | 'dialogChoice4' | 'dialogChoice5' | 'dialogChoice6' | 'dialogChoice7' | 'dialogChoice8' | 'dialogChoice9' | 'gamepadConfirm' | 'gamepadCancel' | 'gamepadUp' | 'gamepadDown' | 'gamepadLeft' | 'gamepadRight';
|
|
2
|
+
export type KeybindingAction = 'confirm' | 'cancel' | 'pause' | 'alternateConfirm' | 'moveUp' | 'moveDown' | 'moveLeft' | 'moveRight' | 'openInventory' | 'openQuests' | 'openCharacterStats' | 'openTechniques' | 'openCalendar' | 'openWorldMap' | 'combatSelectStance0' | 'combatSelectStance1' | 'combatSelectStance2' | 'combatSelectStance3' | 'combatSelectStance4' | 'combatSelectStance5' | 'combatSelectStance6' | 'combatSelectStance7' | 'combatSelectStance8' | 'combatSelectStance9' | 'combatToggleSpeed' | 'combatToggleLog' | 'combatShowStats' | 'combatAutoBattle' | 'combatUseItem' | 'combatCancel' | 'craftingAction1' | 'craftingAction2' | 'craftingAction3' | 'craftingAction4' | 'craftingAction5' | 'craftingAction6' | 'craftingAction7' | 'craftingAction8' | 'craftingAction9' | 'craftingAction10' | 'craftingAction11' | 'craftingAction12' | 'craftingAction13' | 'craftingAction14' | 'craftingAction15' | 'craftingAction16' | 'craftingAction17' | 'craftingAction18' | 'craftingAction19' | 'craftingAction20' | 'craftingAction21' | 'craftingAction22' | 'craftingAction23' | 'craftingAction24' | 'craftingAction25' | 'craftingAction26' | 'craftingAction27' | 'craftingAction28' | 'craftingAction29' | 'craftingAction30' | 'craftingAction31' | 'craftingAction32' | 'craftingAction33' | 'craftingAction34' | 'craftingAction35' | 'craftingAction36' | 'craftingAction37' | 'craftingAction38' | 'craftingAction39' | 'craftingAction40' | 'craftingAction41' | 'craftingAction42' | 'craftingAction43' | 'craftingAction44' | 'craftingAction45' | 'craftingAction46' | 'craftingAction47' | 'craftingAction48' | 'craftingAction49' | 'craftingAction50' | 'dialogChoice1' | 'dialogChoice2' | 'dialogChoice3' | 'dialogChoice4' | 'dialogChoice5' | 'dialogChoice6' | 'dialogChoice7' | 'dialogChoice8' | 'dialogChoice9' | 'gamepadConfirm' | 'gamepadCancel' | 'gamepadUp' | 'gamepadDown' | 'gamepadLeft' | 'gamepadRight';
|
|
3
3
|
export interface KeybindingDefinition {
|
|
4
4
|
action: KeybindingAction;
|
|
5
5
|
category: KeybindingCategory;
|
|
@@ -8,7 +8,7 @@ export interface KeybindingDefinition {
|
|
|
8
8
|
defaultKey: string;
|
|
9
9
|
allowRebind: boolean;
|
|
10
10
|
}
|
|
11
|
-
export type KeybindingsMap = Record<KeybindingAction, string>;
|
|
11
|
+
export type KeybindingsMap = Record<KeybindingAction | string, string>;
|
|
12
12
|
export declare const keybindingDefinitions: KeybindingDefinition[];
|
|
13
13
|
export declare const keybindingCategoryInfo: Record<KeybindingCategory, {
|
|
14
14
|
name: string;
|
package/dist/keybindings.js
CHANGED
|
@@ -237,6 +237,14 @@ export const keybindingDefinitions = [
|
|
|
237
237
|
defaultKey: 's',
|
|
238
238
|
allowRebind: true,
|
|
239
239
|
},
|
|
240
|
+
{
|
|
241
|
+
action: 'combatCancel',
|
|
242
|
+
category: 'combat',
|
|
243
|
+
displayName: 'Cancel Auto Battle / Open Settings',
|
|
244
|
+
description: 'Cancel auto battle or open settings menu',
|
|
245
|
+
defaultKey: 'Escape',
|
|
246
|
+
allowRebind: true,
|
|
247
|
+
},
|
|
240
248
|
// Crafting Actions (Number keys 1-9, then 0)
|
|
241
249
|
{
|
|
242
250
|
action: 'craftingAction1',
|