diff --git a/src/Netscript/NetscriptHelpers.tsx b/src/Netscript/NetscriptHelpers.tsx index 698efd388..bfcb12f04 100644 --- a/src/Netscript/NetscriptHelpers.tsx +++ b/src/Netscript/NetscriptHelpers.tsx @@ -548,13 +548,17 @@ function hack(ctx: NetscriptContext, hostname: string, manual: boolean, opts: un let moneyDrained = server.moneyAvailable * percentHacked * threads; // Over-the-top safety checks - if (moneyDrained <= 0) { + if (moneyDrained < 0) { moneyDrained = 0; - expGainedOnSuccess = expGainedOnFailure; } if (moneyDrained > server.moneyAvailable) { moneyDrained = server.moneyAvailable; } + + if (moneyDrained === 0) { + expGainedOnSuccess = expGainedOnFailure; + } + server.moneyAvailable -= moneyDrained; if (server.moneyAvailable < 0) { server.moneyAvailable = 0; diff --git a/src/Terminal/Terminal.ts b/src/Terminal/Terminal.ts index 0ac746c53..74aa2c91c 100644 --- a/src/Terminal/Terminal.ts +++ b/src/Terminal/Terminal.ts @@ -253,7 +253,7 @@ export class Terminal { // Calculate whether hack was successful const hackChance = calculateHackingChance(server, Player); const rand = Math.random(); - const expGainedOnSuccess = calculateHackingExpGain(server, Player); + let expGainedOnSuccess = calculateHackingExpGain(server, Player); const expGainedOnFailure = expGainedOnSuccess / 4; if (rand < hackChance) { // Success! @@ -268,9 +268,17 @@ export class Terminal { let moneyDrained = server.moneyAvailable * calculatePercentMoneyHacked(server, Player); + // Over-the-top safety checks if (moneyDrained < 0) { moneyDrained = 0; - } // Safety check + } + if (moneyDrained > server.moneyAvailable) { + moneyDrained = server.moneyAvailable; + } + + if (moneyDrained === 0) { + expGainedOnSuccess = expGainedOnFailure; + } server.moneyAvailable -= moneyDrained; if (server.moneyAvailable < 0) {