From 0d8569b27700f53de5fe502a8075f7ee738fb6fc Mon Sep 17 00:00:00 2001
From: Kalle <38327916+Sendouc@users.noreply.github.com>
Date: Thu, 24 Sep 2026 20:56:51 +0300
Subject: [PATCH] Add jump height in enemy ink to analyzer, fix bad stat
---
app/features/build-analyzer/analyzer-types.ts | 1 +
.../build-analyzer/core/stats.test.ts | 11 ++++++++++
app/features/build-analyzer/core/stats.ts | 21 +++++++++++++++++++
.../build-analyzer/data/ability-values.ts | 4 ++--
.../build-analyzer/routes/analyzer.tsx | 5 +++++
...026-09-24-analyzer-enemy-ink-damage-fix.md | 5 +++++
...26-09-24-analyzer-jump-height-enemy-ink.md | 5 +++++
locales/da/analyzer.json | 1 +
locales/de/analyzer.json | 1 +
locales/en/analyzer.json | 1 +
locales/es-ES/analyzer.json | 1 +
locales/es-US/analyzer.json | 1 +
locales/fr-CA/analyzer.json | 1 +
locales/fr-EU/analyzer.json | 1 +
locales/he/analyzer.json | 1 +
locales/it/analyzer.json | 1 +
locales/ja/analyzer.json | 1 +
locales/ko/analyzer.json | 1 +
locales/nl/analyzer.json | 1 +
locales/pl/analyzer.json | 1 +
locales/pt-BR/analyzer.json | 1 +
locales/ru/analyzer.json | 1 +
locales/zh/analyzer.json | 1 +
23 files changed, 66 insertions(+), 2 deletions(-)
create mode 100644 changelog/2026-09-24-analyzer-enemy-ink-damage-fix.md
create mode 100644 changelog/2026-09-24-analyzer-jump-height-enemy-ink.md
diff --git a/app/features/build-analyzer/analyzer-types.ts b/app/features/build-analyzer/analyzer-types.ts
index 47b01070c..8e1b14d91 100644
--- a/app/features/build-analyzer/analyzer-types.ts
+++ b/app/features/build-analyzer/analyzer-types.ts
@@ -311,6 +311,7 @@ export interface AnalyzedBuild {
swimSpeed: Stat;
swimSpeedHoldingRainmaker: Stat;
runSpeedInEnemyInk: Stat;
+ jumpHeightInEnemyInk: Stat;
framesBeforeTakingDamageInEnemyInk: Stat;
damageTakenInEnemyInkPerSecond: Stat;
enemyInkDamageLimit: Stat;
diff --git a/app/features/build-analyzer/core/stats.test.ts b/app/features/build-analyzer/core/stats.test.ts
index 8e1e2f80a..06628aa93 100644
--- a/app/features/build-analyzer/core/stats.test.ts
+++ b/app/features/build-analyzer/core/stats.test.ts
@@ -218,6 +218,17 @@ describe("Analyze build", () => {
expect(statWithISM.value).toBeGreaterThan(statWithISM.baseValue);
});
+ test("RES increases jump height in enemy ink", () => {
+ const analyzed = buildStats({
+ weaponSplId: 40,
+ abilityPoints: new Map([["RES", 57]]),
+ hasTacticooler: false,
+ });
+
+ expect(analyzed.stats.jumpHeightInEnemyInk.baseValue).toBe(0.8);
+ expect(analyzed.stats.jumpHeightInEnemyInk.value).toBe(1.1);
+ });
+
test("Accounts for Jr. big ink tank with main weapon ink consumption %", () => {
const analyzedJr = buildStats({
weaponSplId: 10,
diff --git a/app/features/build-analyzer/core/stats.ts b/app/features/build-analyzer/core/stats.ts
index c29de271c..063bd82bd 100644
--- a/app/features/build-analyzer/core/stats.ts
+++ b/app/features/build-analyzer/core/stats.ts
@@ -142,6 +142,7 @@ export function buildStats({
swimSpeed: swimSpeed(input),
swimSpeedHoldingRainmaker: swimSpeedHoldingRainmaker(input),
runSpeedInEnemyInk: runSpeedInEnemyInk(input),
+ jumpHeightInEnemyInk: jumpHeightInEnemyInk(input),
damageTakenInEnemyInkPerSecond: damageTakenInEnemyInkPerSecond(input),
enemyInkDamageLimit: enemyInkDamageLimit(input),
framesBeforeTakingDamageInEnemyInk:
@@ -926,6 +927,26 @@ function runSpeedInEnemyInk(
};
}
+function jumpHeightInEnemyInk(
+ args: StatFunctionInput,
+): AnalyzedBuild["stats"]["jumpHeightInEnemyInk"] {
+ const JUMP_HEIGHT_IN_ENEMY_INK_ABILITY = "RES";
+ const { baseEffect, effect } = abilityPointsToEffects({
+ abilityPoints: apFromMap({
+ abilityPoints: args.abilityPoints,
+ ability: JUMP_HEIGHT_IN_ENEMY_INK_ABILITY,
+ }),
+ key: "OpInk_JumpVel",
+ weapon: args.mainWeaponParams,
+ });
+
+ return {
+ baseValue: effectToRounded(baseEffect * 10),
+ value: effectToRounded(effect * 10),
+ modifiedBy: JUMP_HEIGHT_IN_ENEMY_INK_ABILITY,
+ };
+}
+
function shootingRunSpeed(
args: StatFunctionInput,
keyName:
diff --git a/app/features/build-analyzer/data/ability-values.ts b/app/features/build-analyzer/data/ability-values.ts
index 281e5fcd9..bc09c0c68 100644
--- a/app/features/build-analyzer/data/ability-values.ts
+++ b/app/features/build-analyzer/data/ability-values.ts
@@ -4,7 +4,7 @@ export const abilityValues = {
ConsumeRt_Sub_Lv1: [0.7, 0.85, 1.0],
ConsumeRt_Sub_Lv2: [0.65, 0.825, 1.0],
ConsumeRt_Sub_Lv3: [0.6, 0.8, 1.0],
- ConsumeRt_Sub_Lv4: [0.71111, 0.85555, 1.0],
+ ConsumeRt_Sub_Lv4: [0.711111, 0.855555, 1.0],
DamageRt_BombH: [0.5, 0.75, 1.0],
DamageRt_BombL: [0.6, 0.75, 1.0],
DamageRt_LineMarker: [0.5, 0.75, 1.0],
@@ -27,7 +27,7 @@ export const abilityValues = {
MoveVel_Stealth_Slow: [0.24, 0.216, 0.1728],
OpInk_ArmorHP: [39.0, 26.0, 0.0],
OpInk_DamageLmt: [0.2, 0.3, 0.4],
- OpInk_DamagePerFrame: [0.0015, 0.0022, 0.003],
+ OpInk_DamagePerFrame: [0.0015, 0.00225, 0.003],
OpInk_JumpVel: [0.11, 0.098, 0.08],
OpInk_MoveVel: [0.0768, 0.0557, 0.024],
OpInk_MoveVel_Shot: [0.042, 0.033, 0.012],
diff --git a/app/features/build-analyzer/routes/analyzer.tsx b/app/features/build-analyzer/routes/analyzer.tsx
index 938cc4989..6b501addb 100644
--- a/app/features/build-analyzer/routes/analyzer.tsx
+++ b/app/features/build-analyzer/routes/analyzer.tsx
@@ -927,6 +927,11 @@ function BuildAnalyzerPage() {
stat={statKeyToTuple("runSpeedInEnemyInk")}
title={t("analyzer:stat.runSpeedInEnemyInk")}
/>
+