From 196dab8ad1300fc6c48e4156950d1eb69f30317f Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Thu, 24 Sep 2026 21:24:00 +0300 Subject: [PATCH] Add Ink Vac suction damage to analyzer --- app/features/build-analyzer/analyzer-constants.ts | 2 ++ app/features/build-analyzer/analyzer-types.ts | 1 + app/features/build-analyzer/core/stats.ts | 1 + app/features/build-analyzer/data/weapon-params.ts | 1 + .../object-damage-calculator/calculator-constants.ts | 1 + app/features/object-damage-calculator/calculator-hooks.ts | 1 + changelog/2026-09-24-ink-vac-suction-object-damage.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 + scripts/create-analyzer-json.ts | 1 + 24 files changed, 29 insertions(+) create mode 100644 changelog/2026-09-24-ink-vac-suction-object-damage.md diff --git a/app/features/build-analyzer/analyzer-constants.ts b/app/features/build-analyzer/analyzer-constants.ts index 68dc9a53a..07cc9c01d 100644 --- a/app/features/build-analyzer/analyzer-constants.ts +++ b/app/features/build-analyzer/analyzer-constants.ts @@ -47,6 +47,7 @@ export const DAMAGE_TYPE = [ "ROLL_OVER", "SPECIAL_MAX_CHARGE", "SPECIAL_MIN_CHARGE", + "SPECIAL_INHALE", "SPECIAL_THROW_DIRECT", "SPECIAL_THROW", "SPECIAL_SWING", @@ -100,6 +101,7 @@ export const damageTypeToWeaponType: Record< WAVE: "SPECIAL", SPECIAL_MAX_CHARGE: "SPECIAL", SPECIAL_MIN_CHARGE: "SPECIAL", + SPECIAL_INHALE: "SPECIAL", SPECIAL_SWING: "SPECIAL", SPECIAL_THROW: "SPECIAL", SPECIAL_THROW_DIRECT: "SPECIAL", diff --git a/app/features/build-analyzer/analyzer-types.ts b/app/features/build-analyzer/analyzer-types.ts index 8e1b14d91..1c1111386 100644 --- a/app/features/build-analyzer/analyzer-types.ts +++ b/app/features/build-analyzer/analyzer-types.ts @@ -177,6 +177,7 @@ export type SpecialWeaponParams = SpecialWeaponParamsObject[SpecialWeaponId] & { WaveDamage?: number; ExhaleBlastParamMaxChargeDistanceDamage?: Array; ExhaleBlastParamMinChargeDistanceDamage?: Array; + InhaleDamage?: number; SwingDamage?: Array; ThrowDamage?: Array; ThrowDirectDamage?: number; diff --git a/app/features/build-analyzer/core/stats.ts b/app/features/build-analyzer/core/stats.ts index 063bd82bd..9dfc29d81 100644 --- a/app/features/build-analyzer/core/stats.ts +++ b/app/features/build-analyzer/core/stats.ts @@ -519,6 +519,7 @@ const damageTypeToParamsKey: Record< WAVE: "WaveDamage", SPECIAL_MAX_CHARGE: "ExhaleBlastParamMaxChargeDistanceDamage", SPECIAL_MIN_CHARGE: "ExhaleBlastParamMinChargeDistanceDamage", + SPECIAL_INHALE: "InhaleDamage", SPECIAL_SWING: "SwingDamage", SPECIAL_THROW: "ThrowDamage", SPECIAL_THROW_DIRECT: "ThrowDirectDamage", diff --git a/app/features/build-analyzer/data/weapon-params.ts b/app/features/build-analyzer/data/weapon-params.ts index dbe5ccc93..3c1449197 100644 --- a/app/features/build-analyzer/data/weapon-params.ts +++ b/app/features/build-analyzer/data/weapon-params.ts @@ -2468,6 +2468,7 @@ export const weaponParams = { Distance: 11, }, ], + InhaleDamage: 20, }, "9": { overwrites: { diff --git a/app/features/object-damage-calculator/calculator-constants.ts b/app/features/object-damage-calculator/calculator-constants.ts index 4697a304d..d9f678d78 100644 --- a/app/features/object-damage-calculator/calculator-constants.ts +++ b/app/features/object-damage-calculator/calculator-constants.ts @@ -202,6 +202,7 @@ export const damagePriorities: Array< ["SPECIAL", [5], "SPECIAL_TICK", "InkStorm"], ["SPECIAL", [8], "SPECIAL_MAX_CHARGE", "BlowerExhale_BombCore"], ["SPECIAL", [8], "SPECIAL_MIN_CHARGE", "BlowerExhale_BombCore"], + ["SPECIAL", [8], "SPECIAL_INHALE", "BlowerInhale"], ["SPECIAL", [10], "BOMB_DIRECT", "Jetpack_BombCore"], ["SPECIAL", [10], "BOMB_NORMAL", "Jetpack_Bullet"], ["SPECIAL", [11], "SPECIAL_THROW_DIRECT", "UltraStamp_Throw_BombCore"], diff --git a/app/features/object-damage-calculator/calculator-hooks.ts b/app/features/object-damage-calculator/calculator-hooks.ts index 8230c5361..9a5b2f520 100644 --- a/app/features/object-damage-calculator/calculator-hooks.ts +++ b/app/features/object-damage-calculator/calculator-hooks.ts @@ -111,6 +111,7 @@ const damageTypePriorityList = [ "ROLL_OVER", "SPECIAL_MAX_CHARGE", "SPECIAL_MIN_CHARGE", + "SPECIAL_INHALE", "SPECIAL_THROW_DIRECT", "SPECIAL_THROW", "SPECIAL_SWING", diff --git a/changelog/2026-09-24-ink-vac-suction-object-damage.md b/changelog/2026-09-24-ink-vac-suction-object-damage.md new file mode 100644 index 000000000..d4662eac3 --- /dev/null +++ b/changelog/2026-09-24-ink-vac-suction-object-damage.md @@ -0,0 +1,5 @@ +--- +navItem: object-damage-calculator +type: feature +--- +Ink Vac's suction damage against objects can now be seen in the damage calculator diff --git a/locales/da/analyzer.json b/locales/da/analyzer.json index ec592d194..d1aefb8d9 100644 --- a/locales/da/analyzer.json +++ b/locales/da/analyzer.json @@ -141,6 +141,7 @@ "damage.WAVE": "Bølge", "damage.SPECIAL_MAX_CHARGE": "Ved højeste opladning", "damage.SPECIAL_MIN_CHARGE": "Ved mindste opladning", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Kast (Ved fuldtræffer)", "damage.SPECIAL_THROW": "Kast", "damage.SPECIAL_SWING": "Sving", diff --git a/locales/de/analyzer.json b/locales/de/analyzer.json index 2cd30238e..5af5433bc 100644 --- a/locales/de/analyzer.json +++ b/locales/de/analyzer.json @@ -141,6 +141,7 @@ "damage.WAVE": "", "damage.SPECIAL_MAX_CHARGE": "", "damage.SPECIAL_MIN_CHARGE": "", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "", "damage.SPECIAL_THROW": "", "damage.SPECIAL_SWING": "", diff --git a/locales/en/analyzer.json b/locales/en/analyzer.json index 941901e1a..3d35a8b85 100644 --- a/locales/en/analyzer.json +++ b/locales/en/analyzer.json @@ -141,6 +141,7 @@ "damage.WAVE": "Wave", "damage.SPECIAL_MAX_CHARGE": "Maximum charge", "damage.SPECIAL_MIN_CHARGE": "Minimum charge", + "damage.SPECIAL_INHALE": "Suction (Per frame)", "damage.SPECIAL_THROW_DIRECT": "Throw (Direct)", "damage.SPECIAL_THROW": "Throw", "damage.SPECIAL_SWING": "Swing", diff --git a/locales/es-ES/analyzer.json b/locales/es-ES/analyzer.json index a6eec817b..326865116 100644 --- a/locales/es-ES/analyzer.json +++ b/locales/es-ES/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "Onda", "damage.SPECIAL_MAX_CHARGE": "Carga máxima", "damage.SPECIAL_MIN_CHARGE": "Carga mínima", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Tiro (directo)", "damage.SPECIAL_THROW": "Tiro", "damage.SPECIAL_SWING": "Martilleo", diff --git a/locales/es-US/analyzer.json b/locales/es-US/analyzer.json index ffeaae62f..abb712c38 100644 --- a/locales/es-US/analyzer.json +++ b/locales/es-US/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "Onda", "damage.SPECIAL_MAX_CHARGE": "Carga máxima", "damage.SPECIAL_MIN_CHARGE": "Carga mínima", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Tiro (directo)", "damage.SPECIAL_THROW": "Tiro", "damage.SPECIAL_SWING": "Martilleo", diff --git a/locales/fr-CA/analyzer.json b/locales/fr-CA/analyzer.json index 918d3bfdb..326ff28bf 100644 --- a/locales/fr-CA/analyzer.json +++ b/locales/fr-CA/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "Onde", "damage.SPECIAL_MAX_CHARGE": "Charge maximum", "damage.SPECIAL_MIN_CHARGE": "Charge minimum", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Lancé (direct)", "damage.SPECIAL_THROW": "Lancé", "damage.SPECIAL_SWING": "Tamponnage", diff --git a/locales/fr-EU/analyzer.json b/locales/fr-EU/analyzer.json index 615ae230a..2b0222b43 100644 --- a/locales/fr-EU/analyzer.json +++ b/locales/fr-EU/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "Onde", "damage.SPECIAL_MAX_CHARGE": "Charge maximum", "damage.SPECIAL_MIN_CHARGE": "Charge minimum", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Lancé (direct)", "damage.SPECIAL_THROW": "Lancé", "damage.SPECIAL_SWING": "Tamponnage", diff --git a/locales/he/analyzer.json b/locales/he/analyzer.json index 2344ecae5..910642386 100644 --- a/locales/he/analyzer.json +++ b/locales/he/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "גל", "damage.SPECIAL_MAX_CHARGE": "טעינה מקסימלית", "damage.SPECIAL_MIN_CHARGE": "טעינה מינימלית", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "זריקה (ישירה)", "damage.SPECIAL_THROW": "זריקה", "damage.SPECIAL_SWING": "הנפה", diff --git a/locales/it/analyzer.json b/locales/it/analyzer.json index dc7b630bc..d9c801f70 100644 --- a/locales/it/analyzer.json +++ b/locales/it/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "Onda", "damage.SPECIAL_MAX_CHARGE": "Carica massima", "damage.SPECIAL_MIN_CHARGE": "Carica minima", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Lancio (Direct)", "damage.SPECIAL_THROW": "Lancio", "damage.SPECIAL_SWING": "Colpo", diff --git a/locales/ja/analyzer.json b/locales/ja/analyzer.json index bca20f904..951b3e8ca 100644 --- a/locales/ja/analyzer.json +++ b/locales/ja/analyzer.json @@ -137,6 +137,7 @@ "damage.WAVE": "衝撃波", "damage.SPECIAL_MAX_CHARGE": "最大吸引時", "damage.SPECIAL_MIN_CHARGE": "最小吸引時", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "投げ (直撃)", "damage.SPECIAL_THROW": "投げ", "damage.SPECIAL_SWING": "連続攻撃", diff --git a/locales/ko/analyzer.json b/locales/ko/analyzer.json index 50e0e4d64..5640f0eb2 100644 --- a/locales/ko/analyzer.json +++ b/locales/ko/analyzer.json @@ -137,6 +137,7 @@ "damage.WAVE": "파동", "damage.SPECIAL_MAX_CHARGE": "최대 충전", "damage.SPECIAL_MIN_CHARGE": "최소 충전", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "던지기 (직격)", "damage.SPECIAL_THROW": "던지기", "damage.SPECIAL_SWING": "휘두르기", diff --git a/locales/nl/analyzer.json b/locales/nl/analyzer.json index be358c0b4..f7dc55d72 100644 --- a/locales/nl/analyzer.json +++ b/locales/nl/analyzer.json @@ -141,6 +141,7 @@ "damage.WAVE": "", "damage.SPECIAL_MAX_CHARGE": "", "damage.SPECIAL_MIN_CHARGE": "", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "", "damage.SPECIAL_THROW": "", "damage.SPECIAL_SWING": "", diff --git a/locales/pl/analyzer.json b/locales/pl/analyzer.json index e8cc8bcd2..61b7ee0ee 100644 --- a/locales/pl/analyzer.json +++ b/locales/pl/analyzer.json @@ -145,6 +145,7 @@ "damage.WAVE": "", "damage.SPECIAL_MAX_CHARGE": "", "damage.SPECIAL_MIN_CHARGE": "", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "", "damage.SPECIAL_THROW": "", "damage.SPECIAL_SWING": "", diff --git a/locales/pt-BR/analyzer.json b/locales/pt-BR/analyzer.json index 8be2d6071..501ad484b 100644 --- a/locales/pt-BR/analyzer.json +++ b/locales/pt-BR/analyzer.json @@ -143,6 +143,7 @@ "damage.WAVE": "Onda", "damage.SPECIAL_MAX_CHARGE": "Carga máxima", "damage.SPECIAL_MIN_CHARGE": "Carga mínima", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Lançamento (Direto)", "damage.SPECIAL_THROW": "Lançamento", "damage.SPECIAL_SWING": "Martelada", diff --git a/locales/ru/analyzer.json b/locales/ru/analyzer.json index 1bc29e224..6767332d9 100644 --- a/locales/ru/analyzer.json +++ b/locales/ru/analyzer.json @@ -145,6 +145,7 @@ "damage.WAVE": "Волна", "damage.SPECIAL_MAX_CHARGE": "Максимальный заряд", "damage.SPECIAL_MIN_CHARGE": "Минимальный заряд", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "Бросок (Прямое попадание)", "damage.SPECIAL_THROW": "Бросок", "damage.SPECIAL_SWING": "Взмах", diff --git a/locales/zh/analyzer.json b/locales/zh/analyzer.json index 886d288b8..4b40a4d21 100644 --- a/locales/zh/analyzer.json +++ b/locales/zh/analyzer.json @@ -138,6 +138,7 @@ "damage.WAVE": "声波", "damage.SPECIAL_MAX_CHARGE": "最大蓄力", "damage.SPECIAL_MIN_CHARGE": "最小蓄力", + "damage.SPECIAL_INHALE": "", "damage.SPECIAL_THROW_DIRECT": "投掷 (直击)", "damage.SPECIAL_THROW": "投掷", "damage.SPECIAL_SWING": "挥动", diff --git a/scripts/create-analyzer-json.ts b/scripts/create-analyzer-json.ts index af289a6b5..05d14dbc2 100644 --- a/scripts/create-analyzer-json.ts +++ b/scripts/create-analyzer-json.ts @@ -969,6 +969,7 @@ function parametersToSpecialWeaponResult(params: any) { params.ExhaleBlastParamMinCharge?.DistanceDamage, ExhaleBlastParamMaxChargeDistanceDamage: params.ExhaleBlastParamMaxCharge?.DistanceDamage, + InhaleDamage: params.InhaleParam?.DamagePerFrameByObject, SwingDamage: SwingDamage(), ThrowDamage: ThrowDamage(), ThrowDirectDamage: params.ThrowMoveParam?.DirectDamageValue,