Angle Shooter tracking defense stat + explanation

This commit is contained in:
Kalle
2022-09-17 17:20:35 +03:00
parent bdaa18b3a2
commit 5d9a3ea13c
5 changed files with 51 additions and 3 deletions

View File

@@ -1,4 +1,5 @@
import type { MainWeaponId } from "~/modules/in-game-lists";
import { ANGLE_SHOOTER_ID } from "~/modules/in-game-lists";
import { INK_MINE_ID, POINT_SENSOR_ID } from "~/modules/in-game-lists";
import type {
AbilityPoints,
@@ -84,6 +85,8 @@ export function buildStats({
subDefPointSensorMarkedTimeInSeconds:
subDefPointSensorMarkedTimeInSeconds(input),
subDefInkMineMarkedTimeInSeconds: subDefInkMineMarkedTimeInSeconds(input),
subDefAngleShooterMarkedTimeInSeconds:
subDefAngleShooterMarkedTimeInSeconds(input),
...subStats(input),
},
};
@@ -698,3 +701,31 @@ function subDefInkMineMarkedTimeInSeconds(
value: framesToSeconds(markingTimeEffect * effect),
};
}
function subDefAngleShooterMarkedTimeInSeconds(
args: StatFunctionInput
): AnalyzedBuild["stats"]["subDefAngleShooterMarkedTimeInSeconds"] {
const SUB_DEF_ANGLE_SHOOTER_MARKED_TIME_IN_SECONDS_KEY = "SRU";
const { baseEffect, effect } = abilityPointsToEffects({
abilityPoints: apFromMap({
abilityPoints: args.abilityPoints,
ability: SUB_DEF_ANGLE_SHOOTER_MARKED_TIME_IN_SECONDS_KEY,
}),
key: "MarkingTimeRt",
weapon: args.mainWeaponParams,
});
const angleShooterParams = weaponParams().subWeapons[ANGLE_SHOOTER_ID];
const { baseEffect: markingTimeEffect } = abilityPointsToEffects({
abilityPoints: 0,
key: "MarkingFrameSubSpec",
weapon: angleShooterParams,
});
return {
baseValue: framesToSeconds(markingTimeEffect * baseEffect),
modifiedBy: SUB_DEF_ANGLE_SHOOTER_MARKED_TIME_IN_SECONDS_KEY,
value: framesToSeconds(markingTimeEffect * effect),
};
}

View File

@@ -188,14 +188,13 @@ export interface AnalyzedBuild {
subDefPointSensorMarkedTimeInSeconds: Stat;
subDefInkMineMarkedTimeInSeconds: Stat;
subDefAngleShooterMarkedTimeInSeconds: Stat;
// subDefBombDamageLight: Stat;
// subDefBombDamageHeavy: Stat;
// subDefAngleShooterDamage: Stat;
// subDefSplashWallDamage: Stat;
// subDefSprinklerDamage: Stat;
// subDefToxicMistMoveReduction: Stat;
// subDefInkMineMarkingTime: Stat;
// subDefPointSensorMarkingTime: Stat;
subVelocity?: Stat;
subFirstPhaseDuration?: Stat;

View File

@@ -20,6 +20,7 @@ import type {
SpecialEffectType,
} from "~/modules/analyzer/types";
import type { BuildAbilitiesTupleWithUnknown } from "~/modules/in-game-lists";
import { ANGLE_SHOOTER_ID } from "~/modules/in-game-lists";
import { INK_MINE_ID, POINT_SENSOR_ID } from "~/modules/in-game-lists";
import {
abilities,
@@ -223,6 +224,16 @@ export default function BuildAnalyzerPage() {
})}
suffix={t("analyzer:suffix.seconds")}
/>
<StatCard
stat={analyzed.stats.subDefAngleShooterMarkedTimeInSeconds}
title={t("analyzer:stat.markedTime", {
weapon: t(`weapons:SUB_${ANGLE_SHOOTER_ID}`),
})}
suffix={t("analyzer:suffix.seconds")}
/>
<div className="analyzer__stat-category-explanation">
{t("analyzer:trackingSubDefExplanation")}
</div>
</StatCategory>
{analyzed.stats.damages.length > 0 && (

View File

@@ -139,6 +139,12 @@
font-size: var(--fonts-xxs);
}
.analyzer__stat-category-explanation {
color: var(--text-lighter);
font-size: var(--fonts-xxs);
grid-column: 1 / 4;
}
.analyzer__patch {
background-color: var(--theme-transparent);
border-radius: var(--rounded);

View File

@@ -65,5 +65,6 @@
"patch": "Patch:",
"abilityPoints": "Ability points",
"abilityPoints.short": "AP",
"consumptionExplanation": "This chart shows the amount of actions left to perform with main weapon after using sub 0-{{maxSubsToUse}} times. Max amount of consecutive subs to use with full ink tank is {{maxSubsToUse}}."
"consumptionExplanation": "This chart shows the amount of actions left to perform with main weapon after using sub 0-{{maxSubsToUse}} times. Max amount of consecutive subs to use with full ink tank is {{maxSubsToUse}}.",
"trackingSubDefExplanation": "Point Sensor, Ink Mine and Angle Shooter tracking times are calculated against an opponent with 0AP of Sub Power Up."
}