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")}