mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-20 16:22:56 +02:00
fix sleeve memory bug
This commit is contained in:
@@ -46,9 +46,8 @@ export class GeneralInfo extends React.Component {
|
||||
return (
|
||||
<div>
|
||||
<p className={"hacknet-general-info"}>
|
||||
The Hacknet is a global, decentralized network of machines. It is used
|
||||
by hackers all around the world to anonymously share computing power
|
||||
and perform distributed cyberattacks without the fear of being traced.
|
||||
The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to
|
||||
anonymously share computing power and perform distributed cyberattacks without the fear of being traced.
|
||||
</p>
|
||||
<p className={"hacknet-general-info"}>{this.getSecondParagraph()}</p>
|
||||
<p className={"hacknet-general-info"}>{this.getThirdParagraph()}</p>
|
||||
|
||||
@@ -33,23 +33,16 @@ export class HacknetNode extends React.Component {
|
||||
} else {
|
||||
let multiplier = 0;
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberLevelUpgrades(
|
||||
node,
|
||||
HacknetNodeConstants.MaxLevel,
|
||||
);
|
||||
multiplier = getMaxNumberLevelUpgrades(node, HacknetNodeConstants.MaxLevel);
|
||||
} else {
|
||||
const levelsToMax = HacknetNodeConstants.MaxLevel - node.level;
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
}
|
||||
|
||||
const upgradeLevelCost = node.calculateLevelUpgradeCost(
|
||||
multiplier,
|
||||
Player.hacknet_node_level_cost_mult,
|
||||
);
|
||||
const upgradeLevelCost = node.calculateLevelUpgradeCost(multiplier, Player.hacknet_node_level_cost_mult);
|
||||
upgradeLevelContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeLevelCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeLevelCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeLevelCost)) {
|
||||
@@ -61,10 +54,7 @@ export class HacknetNode extends React.Component {
|
||||
const upgradeLevelOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberLevelUpgrades(
|
||||
node,
|
||||
HacknetNodeConstants.MaxLevel,
|
||||
);
|
||||
numUpgrades = getMaxNumberLevelUpgrades(node, HacknetNodeConstants.MaxLevel);
|
||||
}
|
||||
purchaseLevelUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
@@ -80,20 +70,14 @@ export class HacknetNode extends React.Component {
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberRamUpgrades(node, HacknetNodeConstants.MaxRam);
|
||||
} else {
|
||||
const levelsToMax = Math.round(
|
||||
Math.log2(HacknetNodeConstants.MaxRam / node.ram),
|
||||
);
|
||||
const levelsToMax = Math.round(Math.log2(HacknetNodeConstants.MaxRam / node.ram));
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
}
|
||||
|
||||
const upgradeRamCost = node.calculateRamUpgradeCost(
|
||||
multiplier,
|
||||
Player.hacknet_node_ram_cost_mult,
|
||||
);
|
||||
const upgradeRamCost = node.calculateRamUpgradeCost(multiplier, Player.hacknet_node_ram_cost_mult);
|
||||
upgradeRamContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeRamCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeRamCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeRamCost)) {
|
||||
@@ -105,10 +89,7 @@ export class HacknetNode extends React.Component {
|
||||
const upgradeRamOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberRamUpgrades(
|
||||
node,
|
||||
HacknetNodeConstants.MaxRam,
|
||||
);
|
||||
numUpgrades = getMaxNumberRamUpgrades(node, HacknetNodeConstants.MaxRam);
|
||||
}
|
||||
purchaseRamUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
@@ -122,23 +103,16 @@ export class HacknetNode extends React.Component {
|
||||
} else {
|
||||
let multiplier = 0;
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberCoreUpgrades(
|
||||
node,
|
||||
HacknetNodeConstants.MaxCores,
|
||||
);
|
||||
multiplier = getMaxNumberCoreUpgrades(node, HacknetNodeConstants.MaxCores);
|
||||
} else {
|
||||
const levelsToMax = HacknetNodeConstants.MaxCores - node.cores;
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
}
|
||||
|
||||
const upgradeCoreCost = node.calculateCoreUpgradeCost(
|
||||
multiplier,
|
||||
Player.hacknet_node_core_cost_mult,
|
||||
);
|
||||
const upgradeCoreCost = node.calculateCoreUpgradeCost(multiplier, Player.hacknet_node_core_cost_mult);
|
||||
upgradeCoresContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeCoreCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeCoreCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeCoreCost)) {
|
||||
@@ -150,10 +124,7 @@ export class HacknetNode extends React.Component {
|
||||
const upgradeCoresOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberCoreUpgrades(
|
||||
node,
|
||||
HacknetNodeConstants.MaxCores,
|
||||
);
|
||||
numUpgrades = getMaxNumberCoreUpgrades(node, HacknetNodeConstants.MaxCores);
|
||||
}
|
||||
purchaseCoreUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
@@ -169,8 +140,7 @@ export class HacknetNode extends React.Component {
|
||||
<div className={"row"}>
|
||||
<p>Production:</p>
|
||||
<span className={"text money-gold"}>
|
||||
<Money money={node.totalMoneyGenerated} player={Player} /> (
|
||||
{MoneyRate(node.moneyGainRatePerSecond)})
|
||||
<Money money={node.totalMoneyGenerated} player={Player} /> ({MoneyRate(node.moneyGainRatePerSecond)})
|
||||
</span>
|
||||
</div>
|
||||
<div className={"row"}>
|
||||
|
||||
@@ -37,23 +37,16 @@ export class HacknetServer extends React.Component {
|
||||
} else {
|
||||
let multiplier = 0;
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberLevelUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxLevel,
|
||||
);
|
||||
multiplier = getMaxNumberLevelUpgrades(node, HacknetServerConstants.MaxLevel);
|
||||
} else {
|
||||
const levelsToMax = HacknetServerConstants.MaxLevel - node.level;
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
}
|
||||
|
||||
const upgradeLevelCost = node.calculateLevelUpgradeCost(
|
||||
multiplier,
|
||||
Player.hacknet_node_level_cost_mult,
|
||||
);
|
||||
const upgradeLevelCost = node.calculateLevelUpgradeCost(multiplier, Player.hacknet_node_level_cost_mult);
|
||||
upgradeLevelContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeLevelCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeLevelCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeLevelCost)) {
|
||||
@@ -65,10 +58,7 @@ export class HacknetServer extends React.Component {
|
||||
const upgradeLevelOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberLevelUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxLevel,
|
||||
);
|
||||
numUpgrades = getMaxNumberLevelUpgrades(node, HacknetServerConstants.MaxLevel);
|
||||
}
|
||||
purchaseLevelUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
@@ -83,25 +73,16 @@ export class HacknetServer extends React.Component {
|
||||
} else {
|
||||
let multiplier = 0;
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberRamUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxRam,
|
||||
);
|
||||
multiplier = getMaxNumberRamUpgrades(node, HacknetServerConstants.MaxRam);
|
||||
} else {
|
||||
const levelsToMax = Math.round(
|
||||
Math.log2(HacknetServerConstants.MaxRam / node.maxRam),
|
||||
);
|
||||
const levelsToMax = Math.round(Math.log2(HacknetServerConstants.MaxRam / node.maxRam));
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
}
|
||||
|
||||
const upgradeRamCost = node.calculateRamUpgradeCost(
|
||||
multiplier,
|
||||
Player.hacknet_node_ram_cost_mult,
|
||||
);
|
||||
const upgradeRamCost = node.calculateRamUpgradeCost(multiplier, Player.hacknet_node_ram_cost_mult);
|
||||
upgradeRamContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeRamCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeRamCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeRamCost)) {
|
||||
@@ -113,10 +94,7 @@ export class HacknetServer extends React.Component {
|
||||
const upgradeRamOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberRamUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxRam,
|
||||
);
|
||||
numUpgrades = getMaxNumberRamUpgrades(node, HacknetServerConstants.MaxRam);
|
||||
}
|
||||
purchaseRamUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
@@ -131,23 +109,16 @@ export class HacknetServer extends React.Component {
|
||||
} else {
|
||||
let multiplier = 0;
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberCoreUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxCores,
|
||||
);
|
||||
multiplier = getMaxNumberCoreUpgrades(node, HacknetServerConstants.MaxCores);
|
||||
} else {
|
||||
const levelsToMax = HacknetServerConstants.MaxCores - node.cores;
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
}
|
||||
|
||||
const upgradeCoreCost = node.calculateCoreUpgradeCost(
|
||||
multiplier,
|
||||
Player.hacknet_node_core_cost_mult,
|
||||
);
|
||||
const upgradeCoreCost = node.calculateCoreUpgradeCost(multiplier, Player.hacknet_node_core_cost_mult);
|
||||
upgradeCoresContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeCoreCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeCoreCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeCoreCost)) {
|
||||
@@ -159,10 +130,7 @@ export class HacknetServer extends React.Component {
|
||||
const upgradeCoresOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberCoreUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxCores,
|
||||
);
|
||||
numUpgrades = getMaxNumberCoreUpgrades(node, HacknetServerConstants.MaxCores);
|
||||
}
|
||||
purchaseCoreUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
@@ -177,10 +145,7 @@ export class HacknetServer extends React.Component {
|
||||
} else {
|
||||
let multiplier = 0;
|
||||
if (purchaseMult === "MAX") {
|
||||
multiplier = getMaxNumberCacheUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxCache,
|
||||
);
|
||||
multiplier = getMaxNumberCacheUpgrades(node, HacknetServerConstants.MaxCache);
|
||||
} else {
|
||||
const levelsToMax = HacknetServerConstants.MaxCache - node.cache;
|
||||
multiplier = Math.min(levelsToMax, purchaseMult);
|
||||
@@ -189,8 +154,7 @@ export class HacknetServer extends React.Component {
|
||||
const upgradeCacheCost = node.calculateCacheUpgradeCost(multiplier);
|
||||
upgradeCacheContent = (
|
||||
<>
|
||||
Upgrade x{multiplier} -{" "}
|
||||
<Money money={upgradeCacheCost} player={Player} />
|
||||
Upgrade x{multiplier} - <Money money={upgradeCacheCost} player={Player} />
|
||||
</>
|
||||
);
|
||||
if (Player.money.lt(upgradeCacheCost)) {
|
||||
@@ -202,10 +166,7 @@ export class HacknetServer extends React.Component {
|
||||
const upgradeCacheOnClick = () => {
|
||||
let numUpgrades = purchaseMult;
|
||||
if (purchaseMult === "MAX") {
|
||||
numUpgrades = getMaxNumberCacheUpgrades(
|
||||
node,
|
||||
HacknetServerConstants.MaxCache,
|
||||
);
|
||||
numUpgrades = getMaxNumberCacheUpgrades(node, HacknetServerConstants.MaxCache);
|
||||
}
|
||||
purchaseCacheUpgrade(node, numUpgrades);
|
||||
recalculate();
|
||||
|
||||
@@ -26,11 +26,7 @@ class HashUpgrade extends React.Component {
|
||||
};
|
||||
|
||||
this.changeTargetServer = this.changeTargetServer.bind(this);
|
||||
this.purchase = this.purchase.bind(
|
||||
this,
|
||||
this.props.hashManager,
|
||||
this.props.upg,
|
||||
);
|
||||
this.purchase = this.purchase.bind(this, this.props.hashManager, this.props.upg);
|
||||
}
|
||||
|
||||
changeTargetServer(e) {
|
||||
@@ -40,8 +36,7 @@ class HashUpgrade extends React.Component {
|
||||
}
|
||||
|
||||
purchase(hashManager, upg) {
|
||||
const canPurchase =
|
||||
hashManager.hashes >= hashManager.getUpgradeCost(upg.name);
|
||||
const canPurchase = hashManager.hashes >= hashManager.getUpgradeCost(upg.name);
|
||||
if (canPurchase) {
|
||||
const res = purchaseHashUpgrade(upg.name, this.state.selectedServer);
|
||||
if (res) {
|
||||
@@ -124,14 +119,7 @@ export class HashUpgradePopup extends React.Component {
|
||||
|
||||
const upgradeElems = Object.keys(HashUpgrades).map((upgName) => {
|
||||
const upg = HashUpgrades[upgName];
|
||||
return (
|
||||
<HashUpgrade
|
||||
upg={upg}
|
||||
hashManager={hashManager}
|
||||
key={upg.name}
|
||||
rerender={rerender}
|
||||
/>
|
||||
);
|
||||
return <HashUpgrade upg={upg} hashManager={hashManager} key={upg.name} rerender={rerender} />;
|
||||
});
|
||||
|
||||
return (
|
||||
|
||||
@@ -26,10 +26,7 @@ export function MultiplierButtons(props) {
|
||||
for (let i = 0; i < mults.length; ++i) {
|
||||
const mult = mults[i];
|
||||
const btnProps = {
|
||||
className:
|
||||
props.purchaseMultiplier === PurchaseMultipliers[mult]
|
||||
? "std-button-disabled"
|
||||
: "std-button",
|
||||
className: props.purchaseMultiplier === PurchaseMultipliers[mult] ? "std-button-disabled" : "std-button",
|
||||
key: mult,
|
||||
onClick: onClicks[i],
|
||||
text: mult,
|
||||
|
||||
@@ -32,8 +32,7 @@ export function PlayerInfo(props) {
|
||||
{hasServers && (
|
||||
<>
|
||||
<span>
|
||||
Hashes: {Hashes(Player.hashManager.hashes)} /{" "}
|
||||
{Hashes(Player.hashManager.capacity)}
|
||||
Hashes: {Hashes(Player.hashManager.hashes)} / {Hashes(Player.hashManager.capacity)}
|
||||
</span>
|
||||
<br />
|
||||
</>
|
||||
|
||||
@@ -3,10 +3,7 @@
|
||||
*/
|
||||
import React from "react";
|
||||
|
||||
import {
|
||||
hasHacknetServers,
|
||||
hasMaxNumberHacknetServers,
|
||||
} from "../HacknetHelpers";
|
||||
import { hasHacknetServers, hasMaxNumberHacknetServers } from "../HacknetHelpers";
|
||||
import { Player } from "../../Player";
|
||||
import { Money } from "../../ui/React/Money";
|
||||
|
||||
|
||||
+5
-17
@@ -41,8 +41,7 @@ export class HacknetRoot extends React.Component {
|
||||
|
||||
this.createHashUpgradesPopup = this.createHashUpgradesPopup.bind(this);
|
||||
this.handlePurchaseButtonClick = this.handlePurchaseButtonClick.bind(this);
|
||||
this.recalculateTotalProduction =
|
||||
this.recalculateTotalProduction.bind(this);
|
||||
this.recalculateTotalProduction = this.recalculateTotalProduction.bind(this);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
@@ -71,9 +70,7 @@ export class HacknetRoot extends React.Component {
|
||||
if (hserver) {
|
||||
total += hserver.hashRate;
|
||||
} else {
|
||||
console.warn(
|
||||
`Could not find Hacknet Server object in AllServers map (i=${i})`,
|
||||
);
|
||||
console.warn(`Could not find Hacknet Server object in AllServers map (i=${i})`);
|
||||
}
|
||||
} else {
|
||||
total += Player.hacknetNodes[i].moneyGainRatePerSecond;
|
||||
@@ -113,9 +110,7 @@ export class HacknetRoot extends React.Component {
|
||||
if (hasHacknetServers()) {
|
||||
const hserver = AllServers[node];
|
||||
if (hserver == null) {
|
||||
throw new Error(
|
||||
`Could not find Hacknet Server object in AllServers map for IP: ${node}`,
|
||||
);
|
||||
throw new Error(`Could not find Hacknet Server object in AllServers map for IP: ${node}`);
|
||||
}
|
||||
return (
|
||||
<HacknetServer
|
||||
@@ -151,18 +146,11 @@ export class HacknetRoot extends React.Component {
|
||||
<br />
|
||||
<div id={"hacknet-nodes-money-multipliers-div"}>
|
||||
<PlayerInfo totalProduction={this.state.totalProduction} />
|
||||
<MultiplierButtons
|
||||
onClicks={purchaseMultiplierOnClicks}
|
||||
purchaseMultiplier={this.state.purchaseMultiplier}
|
||||
/>
|
||||
<MultiplierButtons onClicks={purchaseMultiplierOnClicks} purchaseMultiplier={this.state.purchaseMultiplier} />
|
||||
</div>
|
||||
|
||||
{hasHacknetServers() && (
|
||||
<button
|
||||
className={"std-button"}
|
||||
onClick={this.createHashUpgradesPopup}
|
||||
style={{ display: "block" }}
|
||||
>
|
||||
<button className={"std-button"} onClick={this.createHashUpgradesPopup} style={{ display: "block" }}>
|
||||
{"Spend Hashes on Upgrades"}
|
||||
</button>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user