Add Squeezer secondary mode to analyzer

This commit is contained in:
Kalle
2026-09-25 20:14:23 +03:00
parent d777beade0
commit f660c83338
22 changed files with 70 additions and 2 deletions

View File

@@ -74,6 +74,8 @@ export interface BaseWeaponStats {
InkRecoverStop?: number;
/** How much ink one shot consumes? InkConsume = 0.5 means 2 shots per full tank */
InkConsume?: number;
/** Squeezer rapid fire (secondary mode) consumption per shot */
InkConsumeVariable?: number;
/** How much ink one slosh of slosher consumes? */
InkConsumeSlosher?: number;
/** How much ink one fully charged shot consumes? */
@@ -243,6 +245,7 @@ export const INK_CONSUME_TYPES = [
"SLOSH",
"VERTICAL_SWING",
"HORIZONTAL_SWING",
"SECONDARY_MODE",
"TAP_SHOT",
"FULL_CHARGE",
"SPLATLING_CHARGE",

View File

@@ -169,6 +169,21 @@ describe("Analyze build", () => {
).toBeUndefined();
});
test("Squeezer rapid fire has its own ink consumption and run speed", () => {
const analyzed = buildStats({
weaponSplId: 400,
hasTacticooler: false,
});
expect(
analyzed.stats.mainWeaponInkConsumptionPercentage_SECONDARY_MODE!
.baseValue,
).toBeLessThan(
analyzed.stats.mainWeaponInkConsumptionPercentage_NORMAL!.baseValue,
);
expect(analyzed.stats.shootingRunSpeedSecondaryMode!.baseValue).toBe(0.72);
});
test("ISM decreases main weapon ink consumption %", () => {
const analyzed = buildStats({
weaponSplId: 0,
@@ -262,7 +277,13 @@ describe("Analyze build", () => {
ism: 57,
expected: 101.99,
},
{ why: "Jr. just under 100", weaponSplId: 10, iss: 3, ism: 1, expected: 99.99 },
{
why: "Jr. just under 100",
weaponSplId: 10,
iss: 3,
ism: 1,
expected: 99.99,
},
] as const)(
"Full ink tank actions are truncated, not rounded up ($why)",
({ weaponSplId, iss, ism, expected }) => {

View File

@@ -457,6 +457,8 @@ function inkConsumeTypeToParamsKeys(
return ["InkConsume_SwingParam", "InkConsume_WeaponSwingParam"];
case "SLOSH":
return ["InkConsumeSlosher"];
case "SECONDARY_MODE":
return ["InkConsumeVariable"];
case "TAP_SHOT":
return ["InkConsumeMinCharge"];
case "FULL_CHARGE":

View File

@@ -407,6 +407,7 @@ export const weaponParams = {
Range_FreeGravity: 0.016,
Range_ZRate: 2,
MoveSpeed: 0.066,
MoveSpeedVariable: 0.072,
DamageParam_ValueMax: 380,
DamageParam_ValueMin: 190,
Variable_Damage_ValueMax: 300,
@@ -416,6 +417,7 @@ export const weaponParams = {
Variable_Jump_DegSwerve: 13,
Variable_Stand_DegSwerve: 8,
InkConsume: 0.024,
InkConsumeVariable: 0.0108,
},
"1000": {
Range_SpawnSpeed: 1.5166,

View File

@@ -0,0 +1,5 @@
---
navItem: analyzer
type: bug
---
Build analyzer now shows Squeezer's rapid fire ink consumption and run speed instead of reusing the tap shot values

View File

@@ -33,6 +33,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -73,6 +74,7 @@
"stat.consumption.SLOSH": "Plask",
"stat.consumption.VERTICAL_SWING": "Opladt sving",
"stat.consumption.HORIZONTAL_SWING": "Uopladt sving",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Uopladte skud",
"stat.consumption.FULL_CHARGE": "Fuldt opladte skud",
"stat.consumption.SPLATLING_CHARGE": "Fuldopladte ladninger",

View File

@@ -33,6 +33,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -73,6 +74,7 @@
"stat.consumption.SLOSH": "Sloshes",
"stat.consumption.VERTICAL_SWING": "",
"stat.consumption.HORIZONTAL_SWING": "",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Tap-Schüsse",
"stat.consumption.FULL_CHARGE": "Voll aufgeladene Schüsse",
"stat.consumption.SPLATLING_CHARGE": "Voll aufgeladen",

View File

@@ -33,6 +33,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "Consumption per slosh",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "Consumption per charged swing",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "Consumption per uncharged swing",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "Consumption per secondary mode shot",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "Consumption per tap shot",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "Consumption per fully charged shot",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "Consumption per full charge",
@@ -73,6 +74,7 @@
"stat.consumption.SLOSH": "Sloshes",
"stat.consumption.VERTICAL_SWING": "Charged swings",
"stat.consumption.HORIZONTAL_SWING": "Uncharged swings",
"stat.consumption.SECONDARY_MODE": "Secondary mode shots",
"stat.consumption.TAP_SHOT": "Tap shots",
"stat.consumption.FULL_CHARGE": "Fully charged shots",
"stat.consumption.SPLATLING_CHARGE": "Full charges",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "Consumo por salpicadura",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "Consumo por ataque cargado",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "Consumo por ataque sin cargar",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "Consumo por disparo rápido",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "Consumo por disparo cargado al máximo",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "Consumo por carga completa",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "Lanzamientos de tinta",
"stat.consumption.VERTICAL_SWING": "Barridos cargados",
"stat.consumption.HORIZONTAL_SWING": "Barridos sin carga",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Disparos rápidos",
"stat.consumption.FULL_CHARGE": "Disparos de carga completa",
"stat.consumption.SPLATLING_CHARGE": "Carga completa",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "Consumo por salpicadura",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "Consumo por ataque cargado",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "Consumo por ataque sin cargar",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "Consumo por disparo rápido",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "Consumo por disparo cargado al máximo",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "Consumo por carga completa",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "Lanzamientos de tinta",
"stat.consumption.VERTICAL_SWING": "Barridos cargados",
"stat.consumption.HORIZONTAL_SWING": "Barridos sin carga",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Disparos rápidos",
"stat.consumption.FULL_CHARGE": "Disparos de carga completa",
"stat.consumption.SPLATLING_CHARGE": "Carga completa",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "Seaucées",
"stat.consumption.VERTICAL_SWING": "",
"stat.consumption.HORIZONTAL_SWING": "",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Charge minimale",
"stat.consumption.FULL_CHARGE": "Charge complète",
"stat.consumption.SPLATLING_CHARGE": "Charges pleines",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "Seaucées",
"stat.consumption.VERTICAL_SWING": "Coups chargés",
"stat.consumption.HORIZONTAL_SWING": "Coups non chargés",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Charge minimale",
"stat.consumption.FULL_CHARGE": "Charge complète",
"stat.consumption.SPLATLING_CHARGE": "Charges pleines",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "שפיכות",
"stat.consumption.VERTICAL_SWING": "",
"stat.consumption.HORIZONTAL_SWING": "",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "יריות בודדות",
"stat.consumption.FULL_CHARGE": "יריות טעונות במלואן",
"stat.consumption.SPLATLING_CHARGE": "טעינות מלאות",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "Secchiate",
"stat.consumption.VERTICAL_SWING": "Colpi caricati",
"stat.consumption.HORIZONTAL_SWING": "Colpi non caricati",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Colpi con zero carica",
"stat.consumption.FULL_CHARGE": "Colpi caricati al completo",
"stat.consumption.SPLATLING_CHARGE": "Cariche complete",

View File

@@ -31,6 +31,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -71,6 +72,7 @@
"stat.consumption.SLOSH": "残弾数",
"stat.consumption.VERTICAL_SWING": "縦振り",
"stat.consumption.HORIZONTAL_SWING": "横振り",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "ノーチャージ射撃",
"stat.consumption.FULL_CHARGE": "フルチャージ射撃",
"stat.consumption.SPLATLING_CHARGE": "フルチャージ",

View File

@@ -31,6 +31,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -71,6 +72,7 @@
"stat.consumption.SLOSH": "회",
"stat.consumption.VERTICAL_SWING": "",
"stat.consumption.HORIZONTAL_SWING": "",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "연타",
"stat.consumption.FULL_CHARGE": "풀 충전 샷",
"stat.consumption.SPLATLING_CHARGE": "풀 충전",

View File

@@ -33,6 +33,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -73,6 +74,7 @@
"stat.consumption.SLOSH": "Klotsen",
"stat.consumption.VERTICAL_SWING": "",
"stat.consumption.HORIZONTAL_SWING": "",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Tik schoten",
"stat.consumption.FULL_CHARGE": "Volledig opgeladen schoten",
"stat.consumption.SPLATLING_CHARGE": "Volledig opladen",

View File

@@ -35,6 +35,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -75,6 +76,7 @@
"stat.consumption.SLOSH": "Slosh'e",
"stat.consumption.VERTICAL_SWING": "",
"stat.consumption.HORIZONTAL_SWING": "",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Tap-shoty",
"stat.consumption.FULL_CHARGE": "Strzały w pełni naładowane",
"stat.consumption.SPLATLING_CHARGE": "Pełne ładunki",

View File

@@ -34,6 +34,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -74,6 +75,7 @@
"stat.consumption.SLOSH": "Baldadas",
"stat.consumption.VERTICAL_SWING": "Roladas verticais",
"stat.consumption.HORIZONTAL_SWING": "Roladas horizontais",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Tiros de toque",
"stat.consumption.FULL_CHARGE": "Tiros completamente carregados",
"stat.consumption.SPLATLING_CHARGE": "Cargas completas",

View File

@@ -35,6 +35,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -75,6 +76,7 @@
"stat.consumption.SLOSH": "Выплёскивания",
"stat.consumption.VERTICAL_SWING": "Заряженные атаки",
"stat.consumption.HORIZONTAL_SWING": "Незаряженные атаки",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "Тап шоты",
"stat.consumption.FULL_CHARGE": "Полностью заряженные выстрелы",
"stat.consumption.SPLATLING_CHARGE": "Полные заряды",

View File

@@ -31,6 +31,7 @@
"stat.mainWeaponInkConsumptionPercentage.SLOSH": "",
"stat.mainWeaponInkConsumptionPercentage.VERTICAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.HORIZONTAL_SWING": "",
"stat.mainWeaponInkConsumptionPercentage.SECONDARY_MODE": "",
"stat.mainWeaponInkConsumptionPercentage.TAP_SHOT": "",
"stat.mainWeaponInkConsumptionPercentage.FULL_CHARGE": "",
"stat.mainWeaponInkConsumptionPercentage.SPLATLING_CHARGE": "",
@@ -71,6 +72,7 @@
"stat.consumption.SLOSH": "攻击次数",
"stat.consumption.VERTICAL_SWING": "蓄力攻击",
"stat.consumption.HORIZONTAL_SWING": "未蓄力攻击",
"stat.consumption.SECONDARY_MODE": "",
"stat.consumption.TAP_SHOT": "普通攻击",
"stat.consumption.FULL_CHARGE": "完全蓄力攻击",
"stat.consumption.SPLATLING_CHARGE": "完全蓄力",

View File

@@ -545,7 +545,9 @@ function parametersToMainWeaponResult(
MoveSpeedFullCharge:
params.WeaponParam?.MoveSpeedFullCharge ??
params.spl__WeaponStringerParam?.ChargeParam?.MoveSpeedFullCharge,
MoveSpeedVariable: params.VariableShotParam?.MoveSpeed,
MoveSpeedVariable:
params.VariableWeaponParam?.MoveSpeed ??
params.VariableShotParam?.MoveSpeed,
DamageParam_ValueMax: DamageParam_ValueMax(),
DamageParam_ValueMin: !DamageParam_ValueDirect
? (params.DamageParam?.ValueMin ??
@@ -627,6 +629,7 @@ function parametersToMainWeaponResult(
params.VariableShotParam?.Stand_DegSwerve,
InkRecoverStop: params.WeaponParam?.InkRecoverStop,
InkConsume,
InkConsumeVariable: params.VariableWeaponParam?.InkConsume,
InkConsumeSlosher,
InkConsumeFullCharge: params.WeaponParam?.InkConsumeFullCharge,
InkConsumeMinCharge: params.WeaponParam?.InkConsumeMinCharge,