Add IA Squid Roll effect to analyzer

Closes #961
This commit is contained in:
Kalle
2026-09-24 21:44:58 +03:00
parent 196dab8ad1
commit fe6d369cb7
21 changed files with 60 additions and 0 deletions

View File

@@ -325,6 +325,7 @@ export interface AnalyzedBuild {
shotAutofireSpreadAir?: Stat;
shotAutofireSpreadGround?: number;
squidSurgeChargeFrames: Stat;
squidRollSpeedRetained: Stat;
subDefPointSensorMarkedTimeInSeconds: Stat;
subDefInkMineMarkedTimeInSeconds: Stat;

View File

@@ -229,6 +229,17 @@ describe("Analyze build", () => {
expect(analyzed.stats.jumpHeightInEnemyInk.value).toBe(1.1);
});
test("IA removes the speed loss of consecutive Squid Rolls", () => {
const analyzed = buildStats({
weaponSplId: 40,
abilityPoints: new Map([["IA", 57]]),
hasTacticooler: false,
});
expect(analyzed.stats.squidRollSpeedRetained.baseValue).toBe(85);
expect(analyzed.stats.squidRollSpeedRetained.value).toBe(100);
});
test("Accounts for Jr. big ink tank with main weapon ink consumption %", () => {
const analyzedJr = buildStats({
weaponSplId: 10,

View File

@@ -156,6 +156,7 @@ export function buildStats({
shotAutofireSpreadAir: shotAutofireSpreadAir(input),
shotAutofireSpreadGround: mainWeaponParams.Variable_Stand_DegSwerve,
squidSurgeChargeFrames: squidSurgeChargeFrames(input),
squidRollSpeedRetained: squidRollSpeedRetained(input),
subDefPointSensorMarkedTimeInSeconds:
subDefPointSensorMarkedTimeInSeconds(input),
subDefInkMineMarkedTimeInSeconds: subDefInkMineMarkedTimeInSeconds(input),
@@ -1232,6 +1233,26 @@ function squidSurgeChargeFrames(
};
}
function squidRollSpeedRetained(
args: StatFunctionInput,
): AnalyzedBuild["stats"]["squidRollSpeedRetained"] {
const SQUID_ROLL_SPEED_RETAINED_ABILITY = "IA";
const { baseEffect, effect } = abilityPointsToEffects({
abilityPoints: apFromMap({
abilityPoints: args.abilityPoints,
ability: SQUID_ROLL_SPEED_RETAINED_ABILITY,
}),
key: "Somersault_MoveVelKd",
weapon: args.mainWeaponParams,
});
return {
baseValue: effectToRounded(baseEffect * 100, 1),
value: effectToRounded(effect * 100, 1),
modifiedBy: SQUID_ROLL_SPEED_RETAINED_ABILITY,
};
}
function damageTakenInEnemyInkPerSecond(
args: StatFunctionInput,
): AnalyzedBuild["stats"]["damageTakenInEnemyInkPerSecond"] {

View File

@@ -922,6 +922,12 @@ function BuildAnalyzerPage() {
stat={statKeyToTuple("squidSurgeChargeFrames")}
title={t("analyzer:stat.squidSurgeChargeFrames")}
/>
<StatCard
context={context}
stat={statKeyToTuple("squidRollSpeedRetained")}
title={t("analyzer:stat.squidRollSpeedRetained")}
suffix="%"
/>
<StatCard
context={context}
stat={statKeyToTuple("runSpeedInEnemyInk")}

View File

@@ -0,0 +1,5 @@
---
navItem: analyzer
type: feature
---
Build analyzer shows how Intensify Action affects the speed kept when doing consecutive Squid Rolls

View File

@@ -52,6 +52,7 @@
"stat.shotAutofireSpreadGround": "Sekundær tilstands skudspredning (på jorden)",
"stat.shotAutofireSpreadAir": "Sekundær tilstands skudspredning (ved spring)",
"stat.squidSurgeChargeFrames": "Opladningstid for Murspring (Squid Surge) i billeder (frames)",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Svømmehastighed (Distanceenheder per billede)",
"stat.swimSpeedHoldingRainmaker": "Svømmehastighed imens man bærer Rainmakeren",
"stat.runSpeed": "Løbehastighed (Distanceenheder per billede)",

View File

@@ -52,6 +52,7 @@
"stat.shotAutofireSpreadGround": "",
"stat.shotAutofireSpreadAir": "",
"stat.squidSurgeChargeFrames": "Wandsprung Frames für volle Aufladung",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Schwimmtempo (Einheiten per Frame)",
"stat.swimSpeedHoldingRainmaker": "Schwimmtempo (wenn mit Goldfischkanone)",
"stat.runSpeed": "Renntempo (Einheiten per Frame)",

View File

@@ -52,6 +52,7 @@
"stat.shotAutofireSpreadGround": "Secondary mode spread (ground)",
"stat.shotAutofireSpreadAir": "Secondary mode spread (jumping)",
"stat.squidSurgeChargeFrames": "Squid Surge charge to full frames",
"stat.squidRollSpeedRetained": "Squid Roll speed kept (consecutive rolls)",
"stat.swimSpeed": "Swim speed (units per frame)",
"stat.swimSpeedHoldingRainmaker": "Swim speed (holding Rainmaker)",
"stat.runSpeed": "Run speed (units per frame)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "Modo de disparo secundario (en el suelo)",
"stat.shotAutofireSpreadAir": "Modo de disparo secundario (saltando)",
"stat.squidSurgeChargeFrames": "Tiempo de carga para saltar desde la tinta en fotogramas",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Velocidad de nado (unidades por fotograma)",
"stat.swimSpeedHoldingRainmaker": "Velocidad de nado (con Pez Dorado)",
"stat.runSpeed": "Velocidad al correr (unidades por fotograma)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "Modo de disparo secundario (parado)",
"stat.shotAutofireSpreadAir": "Modo de disparo secundario (saltando)",
"stat.squidSurgeChargeFrames": "Tiempo de carga para saltar desde la tinta en fotogramas",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Velocidad de nado (unidades por fotograma)",
"stat.swimSpeedHoldingRainmaker": "Velocidad de nado (con Pez Dorado)",
"stat.runSpeed": "Velocidad al correr (unidades por fotograma)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "Degrés de dispersion mode auto (sol)",
"stat.shotAutofireSpreadAir": "Degrés de dispersion mode auto (saut)",
"stat.squidSurgeChargeFrames": "Temps de charge de la déferlante (en frames)",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Vitesse de nage (unités/frames)",
"stat.swimSpeedHoldingRainmaker": "Vitesse de nage (Bazookarpe)",
"stat.runSpeed": "Vitesse de course (unités/frames)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "Degrés de dispersion mode auto (sol)",
"stat.shotAutofireSpreadAir": "Degrés de dispersion mode auto (saut)",
"stat.squidSurgeChargeFrames": "Temps de charge de la déferlante (en frames)",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Vitesse de nage (unités/frames)",
"stat.swimSpeedHoldingRainmaker": "Vitesse de nage (Bazookarpe)",
"stat.runSpeed": "Vitesse de course (unités/frames)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "התפשטות במצב המשני (קרקע)",
"stat.shotAutofireSpreadAir": "התפשטות במצב המשני (קפיצה)",
"stat.squidSurgeChargeFrames": "פריימים מלאים עבור Squid Surge",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "מהירות שחייה (יחידות לפריים)",
"stat.swimSpeedHoldingRainmaker": "מהירות שחייה (בהחזקת Rainmaker)",
"stat.runSpeed": "מהירות ריצה (יחידות לפריים)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "Diffusione a caso proiettili modalità secondaria (ground)",
"stat.shotAutofireSpreadAir": "Diffusione a caso proiettili modalità secondaria (saltando)",
"stat.squidSurgeChargeFrames": "Tempo carica avvitotano",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Velocità nuoto (unità per fotogrammo)",
"stat.swimSpeedHoldingRainmaker": "Velocità nuoto (tenendo il bazookarp)",
"stat.runSpeed": "Velocità movimento (unità per fotogrammo)",

View File

@@ -50,6 +50,7 @@
"stat.shotAutofireSpreadGround": "長押し時のブレの角度(立ち撃ち)",
"stat.shotAutofireSpreadAir": "長押し時のブレの角度 (ジャンプ撃ち)",
"stat.squidSurgeChargeFrames": "イカノボリのチャージ完了までのフレーム数",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "イカ速 (DU/F)",
"stat.swimSpeedHoldingRainmaker": "イカ速 (ホコ持ち状態)",
"stat.runSpeed": "ヒト速 (DU/F)",

View File

@@ -50,6 +50,7 @@
"stat.shotAutofireSpreadGround": "보조 모드 탄퍼짐 (지상)",
"stat.shotAutofireSpreadAir": "보조 모드 탄퍼짐 (점프)",
"stat.squidSurgeChargeFrames": "징어클라임 완전 충전 프레임",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "징어대시 (프레임 당 거리)",
"stat.swimSpeedHoldingRainmaker": "징어대시 (랭크 피쉬)",
"stat.runSpeed": "인간 이동 속도 (프레임 당 거리)",

View File

@@ -52,6 +52,7 @@
"stat.shotAutofireSpreadGround": "",
"stat.shotAutofireSpreadAir": "",
"stat.squidSurgeChargeFrames": "Wall Boost tot volledig opgeladen in frames",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Zwemdiploma (eenheden per frame)",
"stat.swimSpeedHoldingRainmaker": "",
"stat.runSpeed": "Hardloper (eenheden per frame)",

View File

@@ -54,6 +54,7 @@
"stat.shotAutofireSpreadGround": "",
"stat.shotAutofireSpreadAir": "",
"stat.squidSurgeChargeFrames": "Czas naładowania Squid Surge'u w klatkach",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Prędkość pływania (jednostka na klatkę)",
"stat.swimSpeedHoldingRainmaker": "Prędkość pływania (trzymając Rainmaker)",
"stat.runSpeed": "Prędkość biegania (jednostka na klatkę)",

View File

@@ -53,6 +53,7 @@
"stat.shotAutofireSpreadGround": "Propagação do modo secundário (no chão)",
"stat.shotAutofireSpreadAir": "Propagação do modo secundário (pulando)",
"stat.squidSurgeChargeFrames": "Quadros para carregar o Squid Surge completamente",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Velocidade de nado (unidades por quadro)",
"stat.swimSpeedHoldingRainmaker": "Velocidade de nado (segurando o Rainmaker)",
"stat.runSpeed": "Velocidade de corrida (unidades por quadro)",

View File

@@ -54,6 +54,7 @@
"stat.shotAutofireSpreadGround": "Разброс выстрелов вторичного режима (на земле)",
"stat.shotAutofireSpreadAir": "Разброс выстрелов вторичного режима (в прыжке)",
"stat.squidSurgeChargeFrames": "Заряд Кальмарного Рывка (в кадрах)",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "Скорость плавания (единицы расстояния за кадр)",
"stat.swimSpeedHoldingRainmaker": "Скорость плавания (с Мегакарпом)",
"stat.runSpeed": "Скорость бега (единицы расстояния за кадр)",

View File

@@ -50,6 +50,7 @@
"stat.shotAutofireSpreadGround": "第二射击模式乱数 (地面)",
"stat.shotAutofireSpreadAir": "第二射击模式乱数 (跳跃)",
"stat.squidSurgeChargeFrames": "鱿鱼登顶蓄力时间",
"stat.squidRollSpeedRetained": "",
"stat.swimSpeed": "游速 (单位/帧)",
"stat.swimSpeedHoldingRainmaker": "游速 (持有真格鱼虎)",
"stat.runSpeed": "走速 (单位/帧)",