mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-25 10:42:51 +02:00
Fix #2021: Handle sleeves xp in stats overview
This commit is contained in:
@@ -17,6 +17,17 @@ export function calculateSkillProgress(exp: number, mult = 1): ISkillProgress {
|
||||
if (nextExperience < 0) nextExperience = 0;
|
||||
|
||||
const normalize = (value: number): number => ((value - baseExperience) * 100) / (nextExperience - baseExperience);
|
||||
let progress = (nextExperience - baseExperience !== 0) ? normalize(exp) : 99.99;
|
||||
|
||||
// Clamp progress: When sleeves are working out, the player gets way too much progress
|
||||
if (progress < 0) progress = 0
|
||||
if (progress > 100) progress = 100;
|
||||
|
||||
// Clamp floating point imprecisions
|
||||
let currentExperience = exp - baseExperience;
|
||||
let remainingExperience = nextExperience - exp;
|
||||
if (currentExperience < 0) currentExperience = 0;
|
||||
if (remainingExperience < 0) remainingExperience = 0;
|
||||
|
||||
return {
|
||||
currentSkill,
|
||||
@@ -24,7 +35,9 @@ export function calculateSkillProgress(exp: number, mult = 1): ISkillProgress {
|
||||
baseExperience,
|
||||
experience: exp,
|
||||
nextExperience,
|
||||
progress: (nextExperience - baseExperience !== 0) ? normalize(exp) : 99.99
|
||||
currentExperience,
|
||||
remainingExperience,
|
||||
progress
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +47,8 @@ export interface ISkillProgress {
|
||||
baseExperience: number;
|
||||
experience: number;
|
||||
nextExperience: number;
|
||||
currentExperience: number;
|
||||
remainingExperience: number;
|
||||
progress: number;
|
||||
}
|
||||
|
||||
@@ -41,6 +56,7 @@ export function getEmptySkillProgress(): ISkillProgress {
|
||||
return {
|
||||
currentSkill: 0, nextSkill: 0,
|
||||
baseExperience: 0, experience: 0, nextExperience: 0,
|
||||
currentExperience: 0, remainingExperience: 0,
|
||||
progress: 0,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user