mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-08-09 15:13:53 -05:00
Analyzer Ink Resistance
This commit is contained in:
parent
30159be6f7
commit
f2fc3492e5
|
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user