Add jump height in enemy ink to analyzer, fix bad stat

This commit is contained in:
Kalle
2026-09-24 20:56:51 +03:00
parent 0407b10ed8
commit 0d8569b277
23 changed files with 66 additions and 2 deletions

View File

@@ -311,6 +311,7 @@ export interface AnalyzedBuild {
swimSpeed: Stat;
swimSpeedHoldingRainmaker: Stat;
runSpeedInEnemyInk: Stat;
jumpHeightInEnemyInk: Stat;
framesBeforeTakingDamageInEnemyInk: Stat;
damageTakenInEnemyInkPerSecond: Stat;
enemyInkDamageLimit: Stat;

View File

@@ -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,

View File

@@ -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:

View File

@@ -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],

View File

@@ -927,6 +927,11 @@ function BuildAnalyzerPage() {
stat={statKeyToTuple("runSpeedInEnemyInk")}
title={t("analyzer:stat.runSpeedInEnemyInk")}
/>
<StatCard
context={context}
stat={statKeyToTuple("jumpHeightInEnemyInk")}
title={t("analyzer:stat.jumpHeightInEnemyInk")}
/>
<StatCard
context={context}
stat={statKeyToTuple("framesBeforeTakingDamageInEnemyInk")}

View File

@@ -0,0 +1,5 @@
---
navItem: analyzer
type: bug
---
Fixed build analyzer's enemy ink damage per second with Ink Resistance Up being slightly off

View File

@@ -0,0 +1,5 @@
---
navItem: analyzer
type: feature
---
Build analyzer shows how Ink Resistance Up affects jump height in enemy ink

View File

@@ -56,6 +56,7 @@
"stat.swimSpeedHoldingRainmaker": "Svømmehastighed imens man bærer Rainmakeren",
"stat.runSpeed": "Løbehastighed (Distanceenheder per billede)",
"stat.runSpeedInEnemyInk": "Løbehastighed i fjendtligt blæk",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Løbehastighed imens man skyder",
"stat.shootingRunSpeedCharging": "Løbehastighed (imens man oplader skud)",
"stat.shootingRunSpeedFullCharge": "Løbehastighed (imens våbnet er fuldopladt)",

View File

@@ -56,6 +56,7 @@
"stat.swimSpeedHoldingRainmaker": "Schwimmtempo (wenn mit Goldfischkanone)",
"stat.runSpeed": "Renntempo (Einheiten per Frame)",
"stat.runSpeedInEnemyInk": "Renntempo in gegnerischer Tinte",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Renntempo beim Schießen",
"stat.shootingRunSpeedCharging": "Renntempo beim Aufladen",
"stat.shootingRunSpeedFullCharge": "Renntempo beim Halten voller Ladung",

View File

@@ -56,6 +56,7 @@
"stat.swimSpeedHoldingRainmaker": "Swim speed (holding Rainmaker)",
"stat.runSpeed": "Run speed (units per frame)",
"stat.runSpeedInEnemyInk": "Run speed in enemy ink",
"stat.jumpHeightInEnemyInk": "Jump height in enemy ink",
"stat.shootingRunSpeed": "Run speed while shooting",
"stat.shootingRunSpeedCharging": "Run speed while charging",
"stat.shootingRunSpeedFullCharge": "Run speed (holding a full charge)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "Velocidad de nado (con Pez Dorado)",
"stat.runSpeed": "Velocidad al correr (unidades por fotograma)",
"stat.runSpeedInEnemyInk": "Velocidad al correr sobre tinta rival",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Velocidad al correr disparando",
"stat.shootingRunSpeedCharging": "Velocidad al correr cargando disparo",
"stat.shootingRunSpeedFullCharge": "Velocidad al correr (manteniendo carga completa)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "Velocidad de nado (con Pez Dorado)",
"stat.runSpeed": "Velocidad al correr (unidades por fotograma)",
"stat.runSpeedInEnemyInk": "Velocidad al correr sobre tinta rival",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Velocidad al correr disparando",
"stat.shootingRunSpeedCharging": "Velocidad al correr cargando disparo",
"stat.shootingRunSpeedFullCharge": "Velocidad al correr (manteniendo carga completa)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "Vitesse de nage (Bazookarpe)",
"stat.runSpeed": "Vitesse de course (unités/frames)",
"stat.runSpeedInEnemyInk": "Vitesse de course dans l'encre ennemie",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Vitesse de course en tirant",
"stat.shootingRunSpeedCharging": "Vitesse de course en chargeant",
"stat.shootingRunSpeedFullCharge": "Vitesse de course (charge complète)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "Vitesse de nage (Bazookarpe)",
"stat.runSpeed": "Vitesse de course (unités/frames)",
"stat.runSpeedInEnemyInk": "Vitesse de course dans l'encre ennemie",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Vitesse de course en tirant",
"stat.shootingRunSpeedCharging": "Vitesse de course en chargeant",
"stat.shootingRunSpeedFullCharge": "Vitesse de course (charge complète)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "מהירות שחייה (בהחזקת Rainmaker)",
"stat.runSpeed": "מהירות ריצה (יחידות לפריים)",
"stat.runSpeedInEnemyInk": "מהירות ריצה על דיו של היריב",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "מהירות ריצה בזמן יריה",
"stat.shootingRunSpeedCharging": "מהירות ריצה בזמן טעינה",
"stat.shootingRunSpeedFullCharge": "מהירות ריצה (החזקת טעינה מלאה)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "Velocità nuoto (tenendo il bazookarp)",
"stat.runSpeed": "Velocità movimento (unità per fotogrammo)",
"stat.runSpeedInEnemyInk": "Velocità movimento in inchiostro nemico",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Velocità movimento durante uso arma principale",
"stat.shootingRunSpeedCharging": "Velocità movimento durante la carica",
"stat.shootingRunSpeedFullCharge": "Velocità movimento a carica piena",

View File

@@ -54,6 +54,7 @@
"stat.swimSpeedHoldingRainmaker": "イカ速 (ホコ持ち状態)",
"stat.runSpeed": "ヒト速 (DU/F)",
"stat.runSpeedInEnemyInk": "敵インク上でのヒト速",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "撃っている最中のヒト速",
"stat.shootingRunSpeedCharging": "チャージ中のヒト速",
"stat.shootingRunSpeedFullCharge": "ヒト速(フルチャージ中)",

View File

@@ -54,6 +54,7 @@
"stat.swimSpeedHoldingRainmaker": "징어대시 (랭크 피쉬)",
"stat.runSpeed": "인간 이동 속도 (프레임 당 거리)",
"stat.runSpeedInEnemyInk": "상대 잉크에서 인간 이동 속도",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "사격 중 인간 이동 속도",
"stat.shootingRunSpeedCharging": "충전 중 인간 이동 속도",
"stat.shootingRunSpeedFullCharge": "인간 이동 속도 (풀충전 중)",

View File

@@ -56,6 +56,7 @@
"stat.swimSpeedHoldingRainmaker": "",
"stat.runSpeed": "Hardloper (eenheden per frame)",
"stat.runSpeedInEnemyInk": "Hardloper in vijandige inkt",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Hardloper tijdens schieten",
"stat.shootingRunSpeedCharging": "Hardloper tijdens opladen",
"stat.shootingRunSpeedFullCharge": "Hardloper (terwijl opgeladen)",

View File

@@ -58,6 +58,7 @@
"stat.swimSpeedHoldingRainmaker": "Prędkość pływania (trzymając Rainmaker)",
"stat.runSpeed": "Prędkość biegania (jednostka na klatkę)",
"stat.runSpeedInEnemyInk": "Prędkośc biegania w farbie przeciwnika",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Prędkość biegania podczas strzelania",
"stat.shootingRunSpeedCharging": "Prędkość biegania podczas ładowania",
"stat.shootingRunSpeedFullCharge": "Prędkość biegania (trzymając strzał)",

View File

@@ -57,6 +57,7 @@
"stat.swimSpeedHoldingRainmaker": "Velocidade de nado (segurando o Rainmaker)",
"stat.runSpeed": "Velocidade de corrida (unidades por quadro)",
"stat.runSpeedInEnemyInk": "Velocidade de corrida na tinta inimiga",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Velocidade de corrida enquanto atira",
"stat.shootingRunSpeedCharging": "Velocidade de corrida enquanto carrega",
"stat.shootingRunSpeedFullCharge": "Velocidade de corrida (segurando uma carga completa)",

View File

@@ -58,6 +58,7 @@
"stat.swimSpeedHoldingRainmaker": "Скорость плавания (с Мегакарпом)",
"stat.runSpeed": "Скорость бега (единицы расстояния за кадр)",
"stat.runSpeedInEnemyInk": "Скорость бега во вражеских чернилах",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "Скорость бега во время стрельбы",
"stat.shootingRunSpeedCharging": "Скорость бега во время заряда",
"stat.shootingRunSpeedFullCharge": "Скорость бега с полным зарядом",

View File

@@ -54,6 +54,7 @@
"stat.swimSpeedHoldingRainmaker": "游速 (持有真格鱼虎)",
"stat.runSpeed": "走速 (单位/帧)",
"stat.runSpeedInEnemyInk": "敌方墨汁上走速",
"stat.jumpHeightInEnemyInk": "",
"stat.shootingRunSpeed": "射击走速",
"stat.shootingRunSpeedCharging": "蓄力走速",
"stat.shootingRunSpeedFullCharge": "完全蓄力走速",