BUGFIX: Some calculations return NaN due to Player.playtimeSinceLastAug being 0 in edge cases (#1985)

This commit is contained in:
catloversg
2025-03-02 00:06:58 +07:00
committed by GitHub
parent c0e01f304d
commit 4ef597bd37
4 changed files with 17 additions and 4 deletions

View File

@@ -1564,7 +1564,11 @@ export const ns: InternalAPI<NSFull> = {
total += script.scriptRef.onlineMoneyMade / script.scriptRef.onlineRunningTime;
}
return [total, Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug / 1000)];
let incomeFromScriptsSinceLastAug = Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug / 1000);
if (!Number.isFinite(incomeFromScriptsSinceLastAug)) {
incomeFromScriptsSinceLastAug = 0;
}
return [total, incomeFromScriptsSinceLastAug];
},
getScriptIncome:
(ctx) =>

View File

@@ -58,8 +58,11 @@ export function scriptCalculateOfflineProduction(runningScript: RunningScript):
const expGain = confidence * (runningScript.onlineExpGained / runningScript.onlineRunningTime) * timePassed;
Player.gainHackingExp(expGain);
const moneyGain =
let moneyGain =
(runningScript.onlineMoneyMade / Player.playtimeSinceLastAug) * timePassed * CONSTANTS.OfflineHackingIncome;
if (!Number.isFinite(moneyGain)) {
moneyGain = 0;
}
// money is given to player during engine load
Player.scriptProdSinceLastAug += moneyGain;

View File

@@ -276,8 +276,11 @@ const Engine: {
tryGeneratingRandomContract(timeOffline / CONSTANTS.MillisecondsPerTenMinutes);
let offlineReputation = 0;
const offlineHackingIncome =
let offlineHackingIncome =
(Player.moneySourceA.hacking / Player.playtimeSinceLastAug) * timeOffline * CONSTANTS.OfflineHackingIncome;
if (!Number.isFinite(offlineHackingIncome)) {
offlineHackingIncome = 0;
}
Player.gainMoney(offlineHackingIncome, "hacking");
// Process offline progress

View File

@@ -30,7 +30,10 @@ const useStyles = makeStyles()((theme: Theme) => ({
}));
export function ScriptProduction(): React.ReactElement {
const { classes } = useStyles();
const prodRateSinceLastAug = Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug / 1000);
let prodRateSinceLastAug = Player.scriptProdSinceLastAug / (Player.playtimeSinceLastAug / 1000);
if (!Number.isFinite(prodRateSinceLastAug)) {
prodRateSinceLastAug = 0;
}
return (
<Table size="small" classes={{ root: classes.size }}>