From 6eea2edb7b9fd189d79c0c35a6f6eb90e1a6cc9a Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Mon, 24 Oct 2022 19:32:53 +0300 Subject: [PATCH] Add splatted by RP user stat to analyzer (ss) --- app/modules/analyzer/stats.ts | 25 +++++++++++++++++-------- app/modules/analyzer/types.ts | 4 ++-- app/routes/analyzer.tsx | 7 ++++++- public/locales/en/analyzer.json | 1 + 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/modules/analyzer/stats.ts b/app/modules/analyzer/stats.ts index bcda4260d..dbad75bfa 100644 --- a/app/modules/analyzer/stats.ts +++ b/app/modules/analyzer/stats.ts @@ -75,7 +75,8 @@ export function buildStats({ }, stats: { specialPoint: specialPoint(input), - specialSavedAfterDeath: specialSavedAfterDeath(input), + specialLost: specialLost(input), + specialLostSplattedByRP: specialLost(input, true), fullInkTankOptions: fullInkTankOptions(input), damages: damages(input), mainWeaponWhiteInkSeconds: @@ -166,11 +167,11 @@ function specialPoint({ } const OWN_RESPAWN_PUNISHER_EXTRA_SPECIAL_LOST = 0.225; -function specialSavedAfterDeath({ - abilityPoints, - mainWeaponParams, - mainOnlyAbilities, -}: StatFunctionInput): AnalyzedBuild["stats"]["specialPoint"] { +const ENEMY_RESPAWN_PUNISHER_EXTRA_SPECIAL_LOST = 0.15; +function specialLost( + { abilityPoints, mainWeaponParams, mainOnlyAbilities }: StatFunctionInput, + splattedByRP = false +): AnalyzedBuild["stats"]["specialPoint"] { const SPECIAL_SAVED_AFTER_DEATH_ABILITY = "SS"; const hasRespawnPunisher = mainOnlyAbilities.includes("RP"); const extraSpecialLost = hasRespawnPunisher @@ -190,9 +191,17 @@ function specialSavedAfterDeath({ weapon: mainWeaponParams, }); + const splattedByExtraPenalty = splattedByRP + ? ENEMY_RESPAWN_PUNISHER_EXTRA_SPECIAL_LOST + : 0; + return { - baseValue: specialSavedAfterDeathForDisplay(baseEffect), - value: specialSavedAfterDeathForDisplay(effect - extraSpecialLost), + baseValue: specialSavedAfterDeathForDisplay( + baseEffect - splattedByExtraPenalty + ), + value: specialSavedAfterDeathForDisplay( + effect - splattedByExtraPenalty - extraSpecialLost + ), modifiedBy: [SPECIAL_SAVED_AFTER_DEATH_ABILITY, "RP"], }; } diff --git a/app/modules/analyzer/types.ts b/app/modules/analyzer/types.ts index e5e23a821..7d6fe14f5 100644 --- a/app/modules/analyzer/types.ts +++ b/app/modules/analyzer/types.ts @@ -185,8 +185,8 @@ export interface AnalyzedBuild { }; stats: { specialPoint: Stat; - /** % of special charge saved when dying */ - specialSavedAfterDeath: Stat; + specialLost: Stat; + specialLostSplattedByRP: Stat; mainWeaponWhiteInkSeconds?: number; subWeaponWhiteInkSeconds: number; fullInkTankOptions: Array; diff --git a/app/routes/analyzer.tsx b/app/routes/analyzer.tsx index 33306a93f..574048e0d 100644 --- a/app/routes/analyzer.tsx +++ b/app/routes/analyzer.tsx @@ -245,10 +245,15 @@ export default function BuildAnalyzerPage() { suffix={t("analyzer:suffix.specialPointsShort")} /> + {analyzed.stats.specialDurationInSeconds && (