Analyzer Ink Resistance

This commit is contained in:
Kalle 2022-09-15 18:21:50 +03:00
parent 30159be6f7
commit f2fc3492e5
4 changed files with 116 additions and 0 deletions

View File

@ -63,6 +63,11 @@ export function buildStats({
runSpeed: runSpeed(input),
// shootingRunSpeed: shootingRunSpeed(input),
swimSpeed: swimSpeed(input),
runSpeedInEnemyInk: runSpeedInEnemyInk(input),
damageTakenInEnemyInkPerSecond: damageTakenInEnemyInkPerSecond(input),
enemyInkDamageLimit: enemyInkDamageLimit(input),
framesBeforeTakingDamageInEnemyInk:
framesBeforeTakingDamageInEnemyInk(input),
quickRespawnTime: quickRespawnTime(input),
superJumpTimeGroundFrames: superJumpTimeGroundFrames(input),
superJumpTimeTotal: superJumpTimeTotal(input),
@ -357,6 +362,26 @@ function runSpeed(args: StatFunctionInput): AnalyzedBuild["stats"]["runSpeed"] {
};
}
function runSpeedInEnemyInk(
args: StatFunctionInput
): AnalyzedBuild["stats"]["runSpeedInEnemyInk"] {
const RUN_SPEED_IN_ENEMY_INK_ABILITY = "RES";
const { baseEffect, effect } = abilityPointsToEffects({
abilityPoints: apFromMap({
abilityPoints: args.abilityPoints,
ability: RUN_SPEED_IN_ENEMY_INK_ABILITY,
}),
key: "OpInk_MoveVel",
weapon: args.mainWeaponParams,
});
return {
baseValue: effectToRounded(baseEffect * 10),
value: effectToRounded(effect * 10),
modifiedBy: RUN_SPEED_IN_ENEMY_INK_ABILITY,
};
}
function swimSpeed(
args: StatFunctionInput
): AnalyzedBuild["stats"]["swimSpeed"] {
@ -466,3 +491,68 @@ function superJumpTimeTotal(
modifiedBy: SUPER_JUMP_TIME_TOTAL_ABILITY,
};
}
function damageTakenInEnemyInkPerSecond(
args: StatFunctionInput
): AnalyzedBuild["stats"]["damageTakenInEnemyInkPerSecond"] {
const DAMAGE_TAKEN_IN_ENEMY_INK_ABILITY = "RES";
const { baseEffect, effect } = abilityPointsToEffects({
abilityPoints: apFromMap({
abilityPoints: args.abilityPoints,
ability: DAMAGE_TAKEN_IN_ENEMY_INK_ABILITY,
}),
key: "OpInk_DamagePerFrame",
weapon: args.mainWeaponParams,
});
return {
baseValue: effectToDamage(baseEffect) * 60,
value: effectToDamage(effect) * 60,
modifiedBy: DAMAGE_TAKEN_IN_ENEMY_INK_ABILITY,
};
}
function enemyInkDamageLimit(
args: StatFunctionInput
): AnalyzedBuild["stats"]["enemyInkDamageLimit"] {
const ENEMY_INK_DAMAGE_LIMIT_ABILITY = "RES";
const { baseEffect, effect } = abilityPointsToEffects({
abilityPoints: apFromMap({
abilityPoints: args.abilityPoints,
ability: ENEMY_INK_DAMAGE_LIMIT_ABILITY,
}),
key: "OpInk_DamageLmt",
weapon: args.mainWeaponParams,
});
return {
baseValue: effectToDamage(baseEffect),
value: effectToDamage(effect),
modifiedBy: ENEMY_INK_DAMAGE_LIMIT_ABILITY,
};
}
function effectToDamage(effect: number) {
// not sure where the 0.05 is coming from. Old analyzer had it as well so assuming it's correct.
return Number((effect * 100 - 0.05).toFixed(1));
}
function framesBeforeTakingDamageInEnemyInk(
args: StatFunctionInput
): AnalyzedBuild["stats"]["framesBeforeTakingDamageInEnemyInk"] {
const FRAMES_BEFORE_TAKING_DAMAGE_IN_ENEMY_INK_ABILITY = "RES";
const { baseEffect, effect } = abilityPointsToEffects({
abilityPoints: apFromMap({
abilityPoints: args.abilityPoints,
ability: FRAMES_BEFORE_TAKING_DAMAGE_IN_ENEMY_INK_ABILITY,
}),
key: "OpInk_ArmorHP",
weapon: args.mainWeaponParams,
});
return {
baseValue: Math.ceil(baseEffect),
value: Math.ceil(effect),
modifiedBy: FRAMES_BEFORE_TAKING_DAMAGE_IN_ENEMY_INK_ABILITY,
};
}

View File

@ -173,6 +173,10 @@ export interface AnalyzedBuild {
// xxx: missing from json
// shootingRunSpeed: Stat;
swimSpeed: Stat;
runSpeedInEnemyInk: Stat;
framesBeforeTakingDamageInEnemyInk: Stat;
damageTakenInEnemyInkPerSecond: Stat;
enemyInkDamageLimit: Stat;
quickRespawnTime: Stat;
superJumpTimeGroundFrames: Stat;
superJumpTimeTotal: Stat;

View File

@ -114,6 +114,10 @@ export default function BuildAnalyzerPage() {
stat={analyzed.stats.runSpeed}
title={t("stat.runSpeed")}
/>
<StatCard
stat={analyzed.stats.runSpeedInEnemyInk}
title={t("stat.runSpeedInEnemyInk")}
/>
</StatCategory>
<StatCategory title={t("stat.category.misc")}>
<StatCard
@ -135,6 +139,20 @@ export default function BuildAnalyzerPage() {
title={t("stat.superJumpTimeTotal")}
suffix={t("suffix.seconds")}
/>
<StatCard
stat={analyzed.stats.framesBeforeTakingDamageInEnemyInk}
title={t("stat.framesBeforeTakingDamageInEnemyInk")}
/>
<StatCard
stat={analyzed.stats.damageTakenInEnemyInkPerSecond}
title={t("stat.damageTakenInEnemyInkPerSecond")}
suffix={t("suffix.hp")}
/>
<StatCard
stat={analyzed.stats.enemyInkDamageLimit}
title={t("stat.enemyInkDamageLimit")}
suffix={t("suffix.hp")}
/>
</StatCategory>
</div>
</div>

View File

@ -20,6 +20,10 @@
"stat.superJumpTimeTotal": "Super jump time (total)",
"stat.swimSpeed": "Swim speed (units per frame)",
"stat.runSpeed": "Run speed (units per frame)",
"stat.runSpeedInEnemyInk": "Run speed in enemy ink",
"stat.framesBeforeTakingDamageInEnemyInk": "Frames before enemy ink damage",
"stat.damageTakenInEnemyInkPerSecond": "Damage from enemy ink per second",
"stat.enemyInkDamageLimit": "Max damage from enemy ink",
"stat.consumption.NORMAL": "Shots",
"stat.consumption.SWING": "Swings",
"stat.consumption.SLOSH": "Sloshes",