Merge pull request #2460 from MartinFournier/feature/convert-extra-hashes-to-cash

Use wasted hashes on "Sell for Money"
This commit is contained in:
hydroflame 2022-01-08 14:55:19 -05:00 committed by GitHub
commit bff3c51a68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

@ -421,7 +421,21 @@ function processAllHacknetServerEarnings(player: IPlayer, numCycles: number): nu
hashes += h; hashes += h;
} }
player.hashManager.storeHashes(hashes); const wastedHashes = player.hashManager.storeHashes(hashes);
if (wastedHashes > 0) {
// Currently set to cap in at 1% of the capacity so it's probably still more efficient to run a script to use the hashes
const maxHashesToConvert = player.hashManager.capacity * 0.01;
const hashesToConvertToCash = Math.min(wastedHashes, maxHashesToConvert);
const upgrade = HashUpgrades["Sell for Money"];
if (upgrade === null) throw new Error("Could not get the hash upgrade");
if (!upgrade.cost) throw new Error("Upgrade is not properly configured");
const multiplier = Math.floor(hashesToConvertToCash / upgrade.cost);
if (multiplier > 0) {
player.gainMoney(upgrade.value * multiplier, "hacknet");
}
}
return hashes; return hashes;
} }

@ -113,9 +113,17 @@ export class HashManager {
this.hashes += cost; this.hashes += cost;
} }
storeHashes(numHashes: number): void { /**
* Stores the given hashes, capping at capacity
* @param numHashes The number of hashes to increment
* @returns The number of wasted hashes (over capacity)
*/
storeHashes(numHashes: number): number {
this.hashes += numHashes; this.hashes += numHashes;
let wastedHashes = this.hashes;
this.hashes = Math.min(this.hashes, this.capacity); this.hashes = Math.min(this.hashes, this.capacity);
wastedHashes -= this.hashes;
return wastedHashes;
} }
updateCapacity(newCap: number): void { updateCapacity(newCap: number): void {