mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-26 09:33:49 +01:00
0518
This commit is contained in:
parent
9a9d2e1f81
commit
6dde89f3c4
@ -47,7 +47,7 @@ List of all Source-Files
|
|||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-9: Coming Soon | |
|
| BitNode-9: Coming Soon | |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-10: Digital Carbon | * Each level of this grants a Duplicate Sleeve |
|
| BitNode-10: Digital Carbon | * Each level of this grants a Duplicate Sleeve. |
|
||||||
| | * Allows the player to access the :ref:`netscript_sleeveapi` in other BitNodes |
|
| | * Allows the player to access the :ref:`netscript_sleeveapi` in other BitNodes |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-11: The Big Crash | * Company favor increases both the player's salary and reputation gain at that |
|
| BitNode-11: The Big Crash | * Company favor increases both the player's salary and reputation gain at that |
|
||||||
|
@ -323,7 +323,7 @@ Source-File
|
|||||||
:Max Level: 3
|
:Max Level: 3
|
||||||
|
|
||||||
This Source-File unlocks Sleeve technology in other BitNodes.
|
This Source-File unlocks Sleeve technology in other BitNodes.
|
||||||
Each level of this Source-File also grants you a Duplicate Sleeve
|
Each level of this Source-File also grants you a Duplicate Sleeve.
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Hard
|
Hard
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
getServer() Netscript Function
|
getServer() Netscript Function
|
||||||
==========================================
|
==========================================
|
||||||
|
|
||||||
.. js:function:: getServer()
|
.. js:function:: getServer([hostname])
|
||||||
|
|
||||||
:RAM cost: 4 GB
|
:RAM cost: 4 GB
|
||||||
|
:param string hostname: Hostname of the server, defaults to host server.
|
||||||
|
|
||||||
If you are not in BitNode-5, then you must have Source-File 5-1 in order to run this function.
|
If you are not in BitNode-5, then you must have Source-File 5-1 in order to run this function.
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ getData() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getData(filename[, hostname=current hostname])
|
.. js:function:: getData(filename[, hostname=current hostname])
|
||||||
|
|
||||||
|
:RAM cost: 5 GB
|
||||||
:param string filename: Filename of the contract
|
:param string filename: Filename of the contract
|
||||||
:param string hostname: Hostname of the server containing the contract.
|
:param string hostname: Hostname of the server containing the contract.
|
||||||
Optional. Defaults to current server if not provided
|
Optional. Defaults to current server if not provided
|
||||||
|
@ -20,4 +20,4 @@ growPercent() Netscript Function
|
|||||||
|
|
||||||
.. code-block:: javascript
|
.. code-block:: javascript
|
||||||
|
|
||||||
tprint(growPercent(getServer(), 50, getPlayer()))
|
tprint(formulas.basic.growPercent(getServer(), 50, getPlayer()))
|
@ -21,4 +21,4 @@ growTime() Netscript Function
|
|||||||
|
|
||||||
server = getServer();
|
server = getServer();
|
||||||
server.hackDifficulty = server.minDifficulty;
|
server.hackDifficulty = server.minDifficulty;
|
||||||
tprint(growTime(server, getPlayer()));
|
tprint(formulas.basic.growTime(server, getPlayer()));
|
@ -21,4 +21,4 @@ hackChance() Netscript Function
|
|||||||
|
|
||||||
server = getServer();
|
server = getServer();
|
||||||
server.hackDifficulty = server.minDifficulty;
|
server.hackDifficulty = server.minDifficulty;
|
||||||
tprint(hackChance(server, getPlayer()));
|
tprint(formulas.basic.hackChance(server, getPlayer()));
|
@ -21,4 +21,4 @@ hackExp() Netscript Function
|
|||||||
|
|
||||||
server = getServer();
|
server = getServer();
|
||||||
server.hackDifficulty = 99.9;
|
server.hackDifficulty = 99.9;
|
||||||
tprint(hackExp(server, getPlayer()));
|
tprint(formulas.basic.hackExp(server, getPlayer()));
|
@ -22,4 +22,4 @@ hackPercent() Netscript Function
|
|||||||
|
|
||||||
server = getServer();
|
server = getServer();
|
||||||
server.hackDifficulty = server.minDifficulty;
|
server.hackDifficulty = server.minDifficulty;
|
||||||
tprint(hackPercent(server, getPlayer()));
|
tprint(formulas.basic.hackPercent(server, getPlayer()));
|
@ -21,4 +21,4 @@ hackTime() Netscript Function
|
|||||||
|
|
||||||
server = getServer();
|
server = getServer();
|
||||||
server.hackDifficulty = server.minDifficulty;
|
server.hackDifficulty = server.minDifficulty;
|
||||||
tprint(hackTime(server, getPlayer()));
|
tprint(formulas.basic.hackTime(server, getPlayer()));
|
@ -21,4 +21,4 @@ weakenTime() Netscript Function
|
|||||||
|
|
||||||
server = getServer();
|
server = getServer();
|
||||||
server.hackDifficulty = server.minDifficulty;
|
server.hackDifficulty = server.minDifficulty;
|
||||||
tprint(weakenTime(server, getPlayer()));
|
tprint(formulas.basic.weakenTime(server, getPlayer()));
|
@ -44,6 +44,18 @@ export function PlayerMultipliers(): React.ReactElement {
|
|||||||
</table>
|
</table>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function BladeburnerMults(): React.ReactElement {
|
||||||
|
if(!Player.canAccessBladeburner()) return (<></>);
|
||||||
|
return (<>
|
||||||
|
{MultiplierTable([
|
||||||
|
['Bladeburner Success Chance', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Max Stamina', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Stamina Gain', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Field Analysis', Player.bladeburner_max_stamina_mult, Player.bladeburner_max_stamina_mult*mults.bladeburner_max_stamina_mult],
|
||||||
|
])}<br />
|
||||||
|
</>);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<p><strong><u>Multipliers:</u></strong></p><br />
|
<p><strong><u>Multipliers:</u></strong></p><br />
|
||||||
@ -103,6 +115,8 @@ export function PlayerMultipliers(): React.ReactElement {
|
|||||||
['Crime success ', Player.crime_success_mult, Player.crime_success_mult*mults.crime_success_mult],
|
['Crime success ', Player.crime_success_mult, Player.crime_success_mult*mults.crime_success_mult],
|
||||||
['Crime money ', Player.crime_money_mult, Player.crime_money_mult*mults.crime_money_mult],
|
['Crime money ', Player.crime_money_mult, Player.crime_money_mult*mults.crime_money_mult],
|
||||||
])}<br />
|
])}<br />
|
||||||
|
|
||||||
|
<BladeburnerMults />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -221,7 +221,7 @@ BitNodes["BitNode11"] = new BitNode(11, "The Big Crash", "Okay. Sell it all.",
|
|||||||
"The growth rate of servers is significantly reduced<br>" +
|
"The growth rate of servers is significantly reduced<br>" +
|
||||||
"Weakening a server is twice as effective<br>" +
|
"Weakening a server is twice as effective<br>" +
|
||||||
"Company wages are decreased by 50%<br>" +
|
"Company wages are decreased by 50%<br>" +
|
||||||
"Corporation valuations are 99% lower and are therefore significantly less profitable<br>" +
|
"Corporation valuations are 90% lower and are therefore significantly less profitable<br>" +
|
||||||
"Hacknet Node production is significantly decreased<br>" +
|
"Hacknet Node production is significantly decreased<br>" +
|
||||||
"Crime and Infiltration are more lucrative<br>" +
|
"Crime and Infiltration are more lucrative<br>" +
|
||||||
"Augmentations are twice as expensive<br><br>" +
|
"Augmentations are twice as expensive<br><br>" +
|
||||||
|
@ -736,7 +736,7 @@ Bladeburner.prototype.completeAction = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var logLossText = "";
|
var logLossText = "";
|
||||||
if (loss > 0) {logLossText += "Lost " + formatNumber(loss, 3) + " rank.";}
|
if (loss > 0) {logLossText += "Lost " + formatNumber(loss, 3) + " rank. ";}
|
||||||
if (damage > 0) {logLossText += "Took " + formatNumber(damage, 0) + " damage.";}
|
if (damage > 0) {logLossText += "Took " + formatNumber(damage, 0) + " damage.";}
|
||||||
if (isOperation && this.logging.ops) {
|
if (isOperation && this.logging.ops) {
|
||||||
this.log(action.name + " failed! " + logLossText);
|
this.log(action.name + " failed! " + logLossText);
|
||||||
|
@ -62,9 +62,6 @@ export function joinFaction(faction) {
|
|||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (routing.isOn(Page.Factions)) {
|
|
||||||
Engine.loadFactionsContent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function startHackingMission(faction) {
|
export function startHackingMission(faction) {
|
||||||
|
@ -75,7 +75,7 @@ export class DonateOption extends React.Component<IProps, IState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleChange(e: React.ChangeEvent<HTMLInputElement>): void {
|
handleChange(e: React.ChangeEvent<HTMLInputElement>): void {
|
||||||
const amt = numeralWrapper.parse(e.target.value);
|
const amt = numeralWrapper.parseMoney(e.target.value);
|
||||||
|
|
||||||
if (isNaN(amt)) {
|
if (isNaN(amt)) {
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -421,7 +421,9 @@ function processAllHacknetServerEarnings(numCycles) {
|
|||||||
// Also, update the hash rate before processing
|
// Also, update the hash rate before processing
|
||||||
const hserver = AllServers[Player.hacknetNodes[i]];
|
const hserver = AllServers[Player.hacknetNodes[i]];
|
||||||
hserver.updateHashRate(Player.hacknet_node_money_mult);
|
hserver.updateHashRate(Player.hacknet_node_money_mult);
|
||||||
hashes += hserver.process(numCycles);
|
const h = hserver.process(numCycles);
|
||||||
|
hserver.totalHashesGenerated += h;
|
||||||
|
hashes += h;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.hashManager.storeHashes(hashes);
|
Player.hashManager.storeHashes(hashes);
|
||||||
|
@ -3981,7 +3981,7 @@ function NetscriptFunctions(workerScript) {
|
|||||||
setActionAutolevel: function(type="", name="", autoLevel=true) {
|
setActionAutolevel: function(type="", name="", autoLevel=true) {
|
||||||
updateDynamicRam("setActionAutolevel", getRamCost("bladeburner", "setActionAutolevel"));
|
updateDynamicRam("setActionAutolevel", getRamCost("bladeburner", "setActionAutolevel"));
|
||||||
checkBladeburnerAccess("setActionAutolevel");
|
checkBladeburnerAccess("setActionAutolevel");
|
||||||
const action = getBladeburnerActionObject("getActionCurrentLevel", type, name);
|
const action = getBladeburnerActionObject("setActionAutolevel", type, name);
|
||||||
action.autoLevel = autoLevel;
|
action.autoLevel = autoLevel;
|
||||||
},
|
},
|
||||||
setActionLevel: function(type="", name="", level=1) {
|
setActionLevel: function(type="", name="", level=1) {
|
||||||
@ -3991,7 +3991,7 @@ function NetscriptFunctions(workerScript) {
|
|||||||
if(level < 1 || level > action.maxLevel) {
|
if(level < 1 || level > action.maxLevel) {
|
||||||
throw makeRuntimeErrorMsg("bladeburner.setActionLevel", `Level must be between 1 and ${action.maxLevel}, is ${level}`)
|
throw makeRuntimeErrorMsg("bladeburner.setActionLevel", `Level must be between 1 and ${action.maxLevel}, is ${level}`)
|
||||||
}
|
}
|
||||||
actionObj.level = level;
|
action.level = level;
|
||||||
},
|
},
|
||||||
getRank: function() {
|
getRank: function() {
|
||||||
updateDynamicRam("getRank", getRamCost("bladeburner", "getRank"));
|
updateDynamicRam("getRank", getRamCost("bladeburner", "getRank"));
|
||||||
|
@ -178,7 +178,7 @@ class CodeMirrorEditorWrapper extends ScriptEditor {
|
|||||||
netscriptFns.push(name);
|
netscriptFns.push(name);
|
||||||
|
|
||||||
//Get functions from namespaces
|
//Get functions from namespaces
|
||||||
const namespaces = ["bladeburner", "hacknet", "codingcontract", "gang", "sleeve"];
|
const namespaces = ["bladeburner", "hacknet", "codingcontract", "gang", "sleeve", "heart", "formulas"];
|
||||||
if (namespaces.includes(name)) {
|
if (namespaces.includes(name)) {
|
||||||
let namespace = fnsObj[name];
|
let namespace = fnsObj[name];
|
||||||
if (typeof namespace !== "object") {continue;}
|
if (typeof namespace !== "object") {continue;}
|
||||||
@ -189,6 +189,7 @@ class CodeMirrorEditorWrapper extends ScriptEditor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
netscriptFns.sort().reverse();
|
||||||
|
|
||||||
CodeMirror.hint.netscript = function(editor) {
|
CodeMirror.hint.netscript = function(editor) {
|
||||||
const origList = CodeMirror.hint.javascript(editor) || {from: editor.getCursor(), to: editor.getCursor(), list: []};
|
const origList = CodeMirror.hint.javascript(editor) || {from: editor.getCursor(), to: editor.getCursor(), list: []};
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||||
|
import CodeMirror from "codemirror/lib/codemirror.js";
|
||||||
|
import { NetscriptFunctions } from "../NetscriptFunctions";
|
||||||
|
|
||||||
(function(mod) {
|
(function(mod) {
|
||||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||||
@ -26,7 +28,7 @@ CodeMirror.defineMode("netscript", function(config, parserConfig) {
|
|||||||
var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d");
|
var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d");
|
||||||
var operator = kw("operator"), atom = {type: "atom", style: "atom"};
|
var operator = kw("operator"), atom = {type: "atom", style: "atom"};
|
||||||
|
|
||||||
return {
|
const ret = {
|
||||||
"if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
|
"if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
|
||||||
"return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C,
|
"return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C,
|
||||||
"debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"),
|
"debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"),
|
||||||
@ -40,234 +42,16 @@ CodeMirror.defineMode("netscript", function(config, parserConfig) {
|
|||||||
|
|
||||||
// Netscript Basic Functions
|
// Netscript Basic Functions
|
||||||
"hack": atom,
|
"hack": atom,
|
||||||
"hackAnalyzeThreads": atom,
|
|
||||||
"hackAnalyzePercent": atom,
|
|
||||||
"hackChance": atom,
|
|
||||||
"sleep": atom,
|
|
||||||
"grow": atom,
|
|
||||||
"weaken": atom,
|
|
||||||
"growthAnalyze": atom,
|
|
||||||
"print": atom,
|
|
||||||
"tprint": atom,
|
|
||||||
"scan": atom,
|
|
||||||
"nuke": atom,
|
|
||||||
"brutessh": atom,
|
|
||||||
"ftpcrack": atom,
|
|
||||||
"clearLog": atom,
|
|
||||||
"disableLog": atom,
|
|
||||||
"enableLog": atom,
|
|
||||||
"isLogEnabled": atom,
|
|
||||||
"getScriptLogs": atom,
|
|
||||||
"tail": atom,
|
|
||||||
"relaysmtp": atom,
|
|
||||||
"httpworm": atom,
|
|
||||||
"sqlinject": atom,
|
|
||||||
"run": atom,
|
|
||||||
"exec": atom,
|
|
||||||
"spawn": atom,
|
|
||||||
"kill": atom,
|
|
||||||
"killall": atom,
|
|
||||||
"exit": atom,
|
|
||||||
"scp": atom,
|
|
||||||
"ls": atom,
|
|
||||||
"ps": atom,
|
|
||||||
"hasRootAccess": atom,
|
|
||||||
"getIp": atom,
|
|
||||||
"getHackingMultipliers": atom,
|
|
||||||
"getBitNodeMultipliers": atom,
|
|
||||||
"getStats": atom,
|
|
||||||
"isBusy": atom,
|
|
||||||
"getHacknetMultipliers": atom,
|
|
||||||
"getHostname": atom,
|
|
||||||
"getHackingLevel": atom,
|
|
||||||
"getServerMoneyAvailable": atom,
|
|
||||||
"getServerMaxMoney": atom,
|
|
||||||
"getServerGrowth": atom,
|
|
||||||
"getServerSecurityLevel": atom,
|
|
||||||
"getServerBaseSecurityLevel": atom,
|
|
||||||
"getServerMinSecurityLevel": atom,
|
|
||||||
"getServerRequiredHackingLevel": atom,
|
|
||||||
"getServerNumPortsRequired": atom,
|
|
||||||
"getServerRam": atom,
|
|
||||||
"serverExists": atom,
|
|
||||||
"fileExists": atom,
|
|
||||||
"isRunning": atom,
|
|
||||||
"deleteServer": atom,
|
|
||||||
"getPurchasedServers": atom,
|
|
||||||
"getPurchasedServerLimit": atom,
|
|
||||||
"getPurchasedServerMaxRam": atom,
|
|
||||||
"getPurchasedServerCost": atom,
|
|
||||||
"purchaseServer": atom,
|
|
||||||
"round": atom,
|
|
||||||
"write": atom,
|
|
||||||
"tryWrite": atom,
|
|
||||||
"read": atom,
|
|
||||||
"peek": atom,
|
|
||||||
"clear": atom,
|
|
||||||
"rm": atom,
|
|
||||||
"getPortHandle": atom,
|
|
||||||
"scriptRunning": atom,
|
|
||||||
"scriptKill": atom,
|
|
||||||
"getScriptName": atom,
|
|
||||||
"getScriptRam": atom,
|
|
||||||
"getHackTime": atom,
|
|
||||||
"getGrowTime": atom,
|
|
||||||
"getWeakenTime": atom,
|
|
||||||
"getScriptIncome": atom,
|
|
||||||
"getScriptExpGain": atom,
|
|
||||||
"getTimeSinceLastAug": atom,
|
|
||||||
"prompt": atom,
|
|
||||||
|
|
||||||
// Netscript Singularity Functions
|
|
||||||
"universityCourse": atom,
|
|
||||||
"getCharacterInformation": atom,
|
|
||||||
"gymWorkout": atom,
|
|
||||||
"travelToCity": atom,
|
|
||||||
"purchaseTor": atom,
|
|
||||||
"purchaseProgram": atom,
|
|
||||||
"upgradeHomeRam": atom,
|
|
||||||
"getUpgradeHomeRamCost": atom,
|
|
||||||
"workForCompany": atom,
|
|
||||||
"applyToCompany": atom,
|
|
||||||
"getCompanyRep": atom,
|
|
||||||
"getCompanyFavor": atom,
|
|
||||||
"stopAction": atom,
|
|
||||||
"getFactionFavor": atom,
|
|
||||||
"getFavorToDonate": atom,
|
|
||||||
"getFactionFavorGain": atom,
|
|
||||||
"getCompanyFavorGain": atom,
|
|
||||||
"checkFactionInvitations": atom,
|
|
||||||
"joinFaction": atom,
|
|
||||||
"workForFaction": atom,
|
|
||||||
"getFactionRep": atom,
|
|
||||||
"donateToFaction": atom,
|
|
||||||
"createProgram": atom,
|
|
||||||
"commitCrime": atom,
|
|
||||||
"getCrimeChance": atom,
|
|
||||||
"getOwnedAugmentations": atom,
|
|
||||||
"getOwnedSourceFiles": atom,
|
|
||||||
"getAugmentationsFromFaction": atom,
|
|
||||||
"getAugmentationPrereq": atom,
|
|
||||||
"getAugmentationCost": atom,
|
|
||||||
"purchaseAugmentation": atom,
|
|
||||||
"installAugmentations": atom,
|
|
||||||
|
|
||||||
// Netscript TIX API
|
|
||||||
"getStockPrice": atom,
|
|
||||||
"getStockAskPrice": atom,
|
|
||||||
"getStockBidPrice": atom,
|
|
||||||
"getStockPosition": atom,
|
|
||||||
"getStockSymbols": atom,
|
|
||||||
"getStockMaxShares": atom,
|
|
||||||
"getStockPurchaseCost": atom,
|
|
||||||
"getStockSaleGain": atom,
|
|
||||||
"buyStock": atom,
|
|
||||||
"sellStock": atom,
|
|
||||||
"shortStock": atom,
|
|
||||||
"sellShort": atom,
|
|
||||||
"placeOrder": atom,
|
|
||||||
"cancelOrder": atom,
|
|
||||||
"getOrders": atom,
|
|
||||||
"getStockVolatility": atom,
|
|
||||||
"getStockForecast": atom,
|
|
||||||
"purchase4SMarketData": atom,
|
|
||||||
"purchase4SMarketDataTixApi": atom,
|
|
||||||
|
|
||||||
// Netscript Hacknet Node API
|
|
||||||
"hacknet": atom,
|
|
||||||
"numNodes": atom,
|
|
||||||
"purchaseNode": atom,
|
|
||||||
"getPurchaseNodeCost": atom,
|
|
||||||
"getNodeStats": atom,
|
|
||||||
"upgradeLevel": atom,
|
|
||||||
"upgradeRam": atom,
|
|
||||||
"upgradeCore": atom,
|
|
||||||
"upgradeCache": atom,
|
|
||||||
"getLevelUpgradeCost": atom,
|
|
||||||
"getRamUpgradeCost": atom,
|
|
||||||
"getCoreUpgradeCost": atom,
|
|
||||||
"getCacheUpgradeCost": atom,
|
|
||||||
|
|
||||||
// Netscript Gang API
|
|
||||||
"gang": atom,
|
|
||||||
"getMemberNames": atom,
|
|
||||||
"getGangInformation": atom,
|
|
||||||
"getMemberInformation": atom,
|
|
||||||
"canRecruitMember": atom,
|
|
||||||
"recruitMember": atom,
|
|
||||||
"getTaskNames": atom,
|
|
||||||
"setMemberTask": atom,
|
|
||||||
"getEquipmentNames": atom,
|
|
||||||
"getEquipmentCost": atom,
|
|
||||||
"getEquipmentType": atom,
|
|
||||||
"purchaseEquipment": atom,
|
|
||||||
"ascendMember": atom,
|
|
||||||
"setTerritoryWarfare": atom,
|
|
||||||
"getChanceToWinClash": atom,
|
|
||||||
"getBonusTime": atom,
|
|
||||||
|
|
||||||
// Netscript Bladeburner API
|
|
||||||
"bladeburner": atom,
|
|
||||||
"getContractNames": atom,
|
|
||||||
"getOperationNames": atom,
|
|
||||||
"getBlackOpNames": atom,
|
|
||||||
"getGeneralActionNames": atom,
|
|
||||||
"getSkillNames": atom,
|
|
||||||
"startAction": atom,
|
|
||||||
"stopBladeburnerAction": atom,
|
|
||||||
"getCurrentAction": atom,
|
|
||||||
"getActionTime": atom,
|
|
||||||
"getActionEstimatedSuccessChance": atom,
|
|
||||||
"getActionCountRemaining": atom,
|
|
||||||
"getActionMaxLevel": atom,
|
|
||||||
"getActionCurrentLevel": atom,
|
|
||||||
"getActionAutolevel": atom,
|
|
||||||
"getActionRepGain": atom,
|
|
||||||
"setActionAutolevel": atom,
|
|
||||||
"setActionLevel": atom,
|
|
||||||
"getRank": atom,
|
|
||||||
"getBlackOpRank": atom,
|
|
||||||
"getSkillPoints": atom,
|
|
||||||
"getSkillLevel": atom,
|
|
||||||
"getSkillUpgradeCost": atom,
|
|
||||||
"upgradeSkill": atom,
|
|
||||||
"getTeamSize": atom,
|
|
||||||
"getCity": atom,
|
|
||||||
"setTeamSize": atom,
|
|
||||||
"getCityEstimatedPopulation": atom,
|
|
||||||
"getCityEstimatedCommunities": atom,
|
|
||||||
"getCityChaos": atom,
|
|
||||||
"switchCity": atom,
|
|
||||||
"getStamina": atom,
|
|
||||||
"joinBladeburnerFaction": atom,
|
|
||||||
// Repeat of above "getBonusTime": atom,
|
|
||||||
|
|
||||||
// Netscript Coding Contract API
|
|
||||||
"codingcontract": atom,
|
|
||||||
"attempt": atom,
|
|
||||||
"getContractType": atom,
|
|
||||||
"getData": atom,
|
|
||||||
"getDescription": atom,
|
|
||||||
"getNumTriesRemaining": atom,
|
|
||||||
|
|
||||||
// Sleeve API
|
|
||||||
"sleeve": atom,
|
|
||||||
"getNumSleeves": atom,
|
|
||||||
"setToShockRecovery": atom,
|
|
||||||
"setToSynchronize": atom,
|
|
||||||
"setToCommitCrime": atom,
|
|
||||||
"setToUniversityCourse": atom,
|
|
||||||
"travel": atom,
|
|
||||||
"setToCompanyWork": atom,
|
|
||||||
"setToFactionWork": atom,
|
|
||||||
"setToGymWorkout": atom,
|
|
||||||
"getSleeveStats": atom,
|
|
||||||
"getTask": atom,
|
|
||||||
"getInformation": atom,
|
|
||||||
"getSleeveAugmentations": atom,
|
|
||||||
"getSleevePurchasableAugs": atom,
|
|
||||||
"purchaseSleeveAug": atom,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function push(obj) {
|
||||||
|
for(const key of Object.keys(obj)) {
|
||||||
|
if(typeof obj[key] === 'function') ret[key] = atom;
|
||||||
|
if(typeof obj[key] === 'object') push(obj[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
push(NetscriptFunctions(null));
|
||||||
|
return ret;
|
||||||
}());
|
}());
|
||||||
|
|
||||||
var isOperatorChar = /[+\-*&%=<>!?|~^@]/;
|
var isOperatorChar = /[+\-*&%=<>!?|~^@]/;
|
||||||
|
@ -108,6 +108,18 @@ export function CharacterInfo(p: IPlayer): React.ReactElement {
|
|||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function BladeburnerMults(): React.ReactElement {
|
||||||
|
if(!p.canAccessBladeburner()) return (<></>);
|
||||||
|
return (<>
|
||||||
|
<MultiplierTable rows={[
|
||||||
|
['Bladeburner Success Chance', p.bladeburner_max_stamina_mult],
|
||||||
|
['Bladeburner Max Stamina', p.bladeburner_stamina_gain_mult],
|
||||||
|
['Bladeburner Stamina Gain', p.bladeburner_analysis_mult],
|
||||||
|
['Bladeburner Field Analysis', p.bladeburner_success_chance_mult],
|
||||||
|
]} /><br />
|
||||||
|
</>);
|
||||||
|
}
|
||||||
|
|
||||||
function CurrentBitNode(): React.ReactElement {
|
function CurrentBitNode(): React.ReactElement {
|
||||||
if(p.sourceFiles.length > 0) {
|
if(p.sourceFiles.length > 0) {
|
||||||
|
|
||||||
@ -233,7 +245,9 @@ export function CharacterInfo(p: IPlayer): React.ReactElement {
|
|||||||
<MultiplierTable rows={[
|
<MultiplierTable rows={[
|
||||||
['Crime success', p.crime_success_mult],
|
['Crime success', p.crime_success_mult],
|
||||||
['Crime money', p.crime_money_mult, p.crime_money_mult*BitNodeMultipliers.CrimeMoney],
|
['Crime money', p.crime_money_mult, p.crime_money_mult*BitNodeMultipliers.CrimeMoney],
|
||||||
]} /><br /><br />
|
]} /><br />
|
||||||
|
|
||||||
|
<BladeburnerMults /><br />
|
||||||
|
|
||||||
<b>Misc.</b><br /><br />
|
<b>Misc.</b><br /><br />
|
||||||
<span>{`Servers owned: ${p.purchasedServers.length} / ${getPurchaseServerLimit()}`}</span><br />
|
<span>{`Servers owned: ${p.purchasedServers.length} / ${getPurchaseServerLimit()}`}</span><br />
|
||||||
|
@ -139,7 +139,7 @@ class NumeralFormatter {
|
|||||||
return this.format(n, "0,0");
|
return this.format(n, "0,0");
|
||||||
}
|
}
|
||||||
|
|
||||||
parse(s: string): number {
|
parseMoney(s: string): number {
|
||||||
// numeral library does not handle formats like 1e10 well (returns 110),
|
// numeral library does not handle formats like 1e10 well (returns 110),
|
||||||
// so if both return a valid number, return the biggest one
|
// so if both return a valid number, return the biggest one
|
||||||
const numeralValue = numeral(s).value();
|
const numeralValue = numeral(s).value();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { dialogBoxCreate } from "./DialogBox";
|
import { dialogBoxCreate } from "./DialogBox";
|
||||||
import { clearEventListeners } from "./uiHelpers/clearEventListeners";
|
import { clearEventListeners } from "./uiHelpers/clearEventListeners";
|
||||||
import { formatNumber } from "./StringHelperFunctions";
|
import { numeralWrapper } from "../src/ui/numeralFormat";
|
||||||
|
|
||||||
import { BitNodeMultipliers } from "../src/BitNode/BitNodeMultipliers";
|
import { BitNodeMultipliers } from "../src/BitNode/BitNodeMultipliers";
|
||||||
import { CONSTANTS } from "../src/Constants";
|
import { CONSTANTS } from "../src/Constants";
|
||||||
@ -38,12 +38,12 @@ function infiltrationBoxCreate(inst) {
|
|||||||
Player.gainIntelligenceExp(inst.calcGainedIntelligenceExp());
|
Player.gainIntelligenceExp(inst.calcGainedIntelligenceExp());
|
||||||
|
|
||||||
const expGainText = ["You gained:",
|
const expGainText = ["You gained:",
|
||||||
`${formatNumber(inst.calcGainedHackingExp(), 3)} hacking exp`,
|
`${numeralWrapper.formatExp(inst.calcGainedHackingExp(), 3)} hacking exp`,
|
||||||
`${formatNumber(inst.calcGainedStrengthExp(), 3)} str exp`,
|
`${numeralWrapper.formatExp(inst.calcGainedStrengthExp(), 3)} str exp`,
|
||||||
`${formatNumber(inst.calcGainedDefenseExp(), 3)} def exp`,
|
`${numeralWrapper.formatExp(inst.calcGainedDefenseExp(), 3)} def exp`,
|
||||||
`${formatNumber(inst.calcGainedDexterityExp(), 3)} dex exp`,
|
`${numeralWrapper.formatExp(inst.calcGainedDexterityExp(), 3)} dex exp`,
|
||||||
`${formatNumber(inst.calcGainedAgilityExp(), 3)} agi exp`,
|
`${numeralWrapper.formatExp(inst.calcGainedAgilityExp(), 3)} agi exp`,
|
||||||
`${formatNumber(inst.calcGainedCharismaExp(), 3)} cha exp`].join("\n");
|
`${numeralWrapper.formatExp(inst.calcGainedCharismaExp(), 3)} cha exp`].join("\n");
|
||||||
|
|
||||||
var totalValue = 0;
|
var totalValue = 0;
|
||||||
for (var i = 0; i < inst.secretsStolen.length; ++i) {
|
for (var i = 0; i < inst.secretsStolen.length; ++i) {
|
||||||
@ -58,9 +58,9 @@ function infiltrationBoxCreate(inst) {
|
|||||||
CONSTANTS.InfiltrationRepValue * BitNodeMultipliers.InfiltrationRep;
|
CONSTANTS.InfiltrationRepValue * BitNodeMultipliers.InfiltrationRep;
|
||||||
var moneyValue = totalValue * CONSTANTS.InfiltrationMoneyValue * BitNodeMultipliers.InfiltrationMoney;
|
var moneyValue = totalValue * CONSTANTS.InfiltrationMoneyValue * BitNodeMultipliers.InfiltrationMoney;
|
||||||
infiltrationSetText("You can sell the classified documents and secrets " +
|
infiltrationSetText("You can sell the classified documents and secrets " +
|
||||||
"you stole from " + inst.companyName + " for <span class='money-gold'>$" +
|
"you stole from " + inst.companyName + " for <span class='money-gold'>" +
|
||||||
formatNumber(moneyValue, 2) + "</span> on the black market or you can give it " +
|
numeralWrapper.formatMoney(moneyValue) + "</span> on the black market or you can give it " +
|
||||||
"to a faction to gain <span class='light-yellow'>" + formatNumber(facValue, 3) + " reputation</span> with " +
|
"to a faction to gain <span class='light-yellow'>" + numeralWrapper.formatReputation(facValue) + " reputation</span> with " +
|
||||||
"that faction.");
|
"that faction.");
|
||||||
var selector = document.getElementById("infiltration-faction-select");
|
var selector = document.getElementById("infiltration-faction-select");
|
||||||
selector.innerHTML = "";
|
selector.innerHTML = "";
|
||||||
@ -88,7 +88,7 @@ function infiltrationBoxCreate(inst) {
|
|||||||
Player.gainMoney(moneyValue);
|
Player.gainMoney(moneyValue);
|
||||||
Player.recordMoneySource(moneyValue, "infiltration");
|
Player.recordMoneySource(moneyValue, "infiltration");
|
||||||
dialogBoxCreate("You sold the classified information you stole from " + inst.companyName +
|
dialogBoxCreate("You sold the classified information you stole from " + inst.companyName +
|
||||||
" for <span class='money-gold'>$" + formatNumber(moneyValue, 2) + "</span> on the black market!<br><br>" +
|
" for <span class='money-gold'>" + numeralWrapper.formatMoney(moneyValue) + "</span> on the black market!<br><br>" +
|
||||||
expGainText);
|
expGainText);
|
||||||
infiltrationBoxClose();
|
infiltrationBoxClose();
|
||||||
return false;
|
return false;
|
||||||
@ -108,7 +108,7 @@ function infiltrationBoxCreate(inst) {
|
|||||||
}
|
}
|
||||||
faction.playerReputation += facValue;
|
faction.playerReputation += facValue;
|
||||||
dialogBoxCreate("You gave the classified information you stole from " + inst.companyName +
|
dialogBoxCreate("You gave the classified information you stole from " + inst.companyName +
|
||||||
" to " + facName + " and gained <span class='light-yellow'>" + formatNumber(facValue, 3) + " reputation</span> with the faction. <br><br>" +
|
" to " + facName + " and gained <span class='light-yellow'>" + numeralWrapper.formatReputation(facValue) + " reputation</span> with the faction. <br><br>" +
|
||||||
expGainText);
|
expGainText);
|
||||||
infiltrationBoxClose();
|
infiltrationBoxClose();
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user