mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-21 05:35:45 +01:00
Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev
This commit is contained in:
commit
066ccf343a
@ -48,6 +48,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 |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| 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 |
|
||||||
| | company by 1% per favor (rather than just the reputation gain) |
|
| | company by 1% per favor (rather than just the reputation gain) |
|
||||||
|
@ -29,4 +29,5 @@ to reach out to the developer!
|
|||||||
Bladeburner API <netscript/netscriptbladeburnerapi>
|
Bladeburner API <netscript/netscriptbladeburnerapi>
|
||||||
Gang API <netscript/netscriptgangapi>
|
Gang API <netscript/netscriptgangapi>
|
||||||
Coding Contract API <netscript/netscriptcodingcontractapi>
|
Coding Contract API <netscript/netscriptcodingcontractapi>
|
||||||
|
Sleeve API <netscript/netscriptsleeveapi>
|
||||||
Miscellaneous <netscript/netscriptmisc>
|
Miscellaneous <netscript/netscriptmisc>
|
||||||
|
65
doc/source/netscript/netscriptsleeveapi.rst
Normal file
65
doc/source/netscript/netscriptsleeveapi.rst
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
.. _netscript_sleeveapi:
|
||||||
|
|
||||||
|
Netscript Sleeve API
|
||||||
|
=========================
|
||||||
|
Netscript provides the following API for interacting with the game's Sleeve mechanic.
|
||||||
|
|
||||||
|
The Sleeve API is **not** immediately available to the player and must be unlocked
|
||||||
|
later in the game.
|
||||||
|
|
||||||
|
**WARNING: This page contains spoilers for the game**
|
||||||
|
|
||||||
|
The Sleeve API is unlocked in BitNode-10. If you are in BitNode-10, you will
|
||||||
|
automatically gain access to this API. Otherwise, you must have Source-File 10 in
|
||||||
|
order to use this API in other BitNodes
|
||||||
|
|
||||||
|
**Sleeve API functions must be accessed through the 'sleeve' namespace**
|
||||||
|
|
||||||
|
In :ref:`netscript1`::
|
||||||
|
|
||||||
|
sleeve.synchronize(0);
|
||||||
|
sleeve.commitCrime(0, "shoplift");
|
||||||
|
|
||||||
|
In :ref:`netscriptjs`::
|
||||||
|
|
||||||
|
ns.sleeve.synchronize(0);
|
||||||
|
ns.sleeve.commitCrime(0, "shoplift");
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: Functions:
|
||||||
|
|
||||||
|
commitCrime() <sleeveapi/commitCrime>
|
||||||
|
getNumSleeves() <sleeveapi/getNumSleeves>
|
||||||
|
getTask() <sleeveapi/getTask>
|
||||||
|
synchronize() <sleeveapi/synchronize>
|
||||||
|
travel() <sleeveapi/travel>
|
||||||
|
workForFaction() <sleeveapi/workForFaction>
|
||||||
|
getInformation() <sleeveapi/getInformation>
|
||||||
|
getStats() <sleeveapi/getStats>
|
||||||
|
shockRecovery() <sleeveapi/shockRecovery>
|
||||||
|
takeUniversityCourse() <sleeveapi/takeUniversityCourse>
|
||||||
|
workForCompany() <sleeveapi/workForCompany>
|
||||||
|
workoutAtGym() <sleeveapi/workoutAtGym>
|
||||||
|
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
**Basic example usage**::
|
||||||
|
|
||||||
|
for(let i = 0; i < sleeve.getNumSleeves(); i++) {
|
||||||
|
sleeve.shockRecovery(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
await sleep(10*60*60); // wait 10h
|
||||||
|
|
||||||
|
for(let i = 0; i < sleeve.getNumSleeves(); i++) {
|
||||||
|
sleeve.synchronize(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
await sleep(10*60*60); // wait 10h
|
||||||
|
|
||||||
|
for(let i = 0; i < sleeve.getNumSleeves(); i++) {
|
||||||
|
sleeve.commitCrime(i, 'shoplift');
|
||||||
|
}
|
||||||
|
|
11
doc/source/netscript/sleeveapi/commitCrime.rst
Normal file
11
doc/source/netscript/sleeveapi/commitCrime.rst
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
commitCrime() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: commitCrime(sleeveNumber, name)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to start commiting crime.
|
||||||
|
:param string name: Name of the crime. Must be an exact match.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not this action was set successfully.
|
||||||
|
|
||||||
|
Returns false if an invalid action is specified.
|
65
doc/source/netscript/sleeveapi/getInformation.rst
Normal file
65
doc/source/netscript/sleeveapi/getInformation.rst
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
getInformation() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: getInformation(sleeveNumber)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to retrieve information.
|
||||||
|
|
||||||
|
Return a struct containing tons of information about this sleeve
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
city: location of the sleeve,
|
||||||
|
hp: current hp of the sleeve,
|
||||||
|
maxHp: max hp of the sleeve,
|
||||||
|
jobs: jobs available to the sleeve,
|
||||||
|
jobTitle: job titles available to the sleeve,
|
||||||
|
tor: does this sleeve have access to the tor router,
|
||||||
|
mult: {
|
||||||
|
agility: agility multiplier,
|
||||||
|
agilityExp: agility exp multiplier,
|
||||||
|
companyRep: company reputation multiplier,
|
||||||
|
crimeMoney: crime money multiplier,
|
||||||
|
crimeSuccess: crime success chance multiplier,
|
||||||
|
defense: defense multiplier,
|
||||||
|
defenseExp: defense exp multiplier,
|
||||||
|
dexterity: dexterity multiplier,
|
||||||
|
dexterityExp: dexterity exp multiplier,
|
||||||
|
factionRep: faction reputation multiplier,
|
||||||
|
hacking: hacking skill multiplier,
|
||||||
|
hackingExp: hacking exp multiplier,
|
||||||
|
strength: strength multiplier,
|
||||||
|
strengthExp: strength exp multiplier,
|
||||||
|
workMoney: work money multiplier,
|
||||||
|
},
|
||||||
|
timeWorked: time spent on the current task in milliseconds,
|
||||||
|
earningsForSleeves : { earnings synchronized to other sleeves
|
||||||
|
workHackExpGain: hacking exp gained from work,
|
||||||
|
workStrExpGain: strength exp gained from work,
|
||||||
|
workDefExpGain: defense exp gained from work,
|
||||||
|
workDexExpGain: dexterity exp gained from work,
|
||||||
|
workAgiExpGain: agility exp gained from work,
|
||||||
|
workChaExpGain: charisma exp gained from work,
|
||||||
|
workMoneyGain: money gained from work,
|
||||||
|
},
|
||||||
|
earningsForPlayer : { earnings synchronized to the player
|
||||||
|
workHackExpGain: hacking exp gained from work,
|
||||||
|
workStrExpGain: strength exp gained from work,
|
||||||
|
workDefExpGain: defense exp gained from work,
|
||||||
|
workDexExpGain: dexterity exp gained from work,
|
||||||
|
workAgiExpGain: agility exp gained from work,
|
||||||
|
workChaExpGain: charisma exp gained from work,
|
||||||
|
workMoneyGain: money gained from work,
|
||||||
|
},
|
||||||
|
earningsForTask : { earnings for this sleeve
|
||||||
|
workHackExpGain: hacking exp gained from work,
|
||||||
|
workStrExpGain: strength exp gained from work,
|
||||||
|
workDefExpGain: defense exp gained from work,
|
||||||
|
workDexExpGain: dexterity exp gained from work,
|
||||||
|
workAgiExpGain: agility exp gained from work,
|
||||||
|
workChaExpGain: charisma exp gained from work,
|
||||||
|
workMoneyGain: money gained from work,
|
||||||
|
},
|
||||||
|
workRepGain: sl.getRepGain(),
|
||||||
|
}
|
6
doc/source/netscript/sleeveapi/getNumSleeves.rst
Normal file
6
doc/source/netscript/sleeveapi/getNumSleeves.rst
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
getNumSleeves() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: getNumSleeves()
|
||||||
|
|
||||||
|
Return the number of duplicate sleeves the player has.
|
21
doc/source/netscript/sleeveapi/getStats.rst
Normal file
21
doc/source/netscript/sleeveapi/getStats.rst
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
getStats() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: getStatus(sleeveNumber)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to get stats of.
|
||||||
|
|
||||||
|
Return a structure containing the stats of the sleeve
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
shock: current shock of the sleeve [0-1],
|
||||||
|
sync: current sync of the sleeve [0-1],
|
||||||
|
hacking_skill: current hacking skill of the sleeve,
|
||||||
|
strength: current strength of the sleeve,
|
||||||
|
defense: current defense of the sleeve,
|
||||||
|
dexterity: current dexterity of the sleeve,
|
||||||
|
agility: current agility of the sleeve,
|
||||||
|
charisma: current charisma of the sleeve,
|
||||||
|
}
|
18
doc/source/netscript/sleeveapi/getTask.rst
Normal file
18
doc/source/netscript/sleeveapi/getTask.rst
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
getTask() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: getTask(sleeveNumber)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to retrieve task from.
|
||||||
|
|
||||||
|
Return the current task that the sleeve is performing. type is set to "Idle" if the sleeve isn't doing anything
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
task: string, // task type
|
||||||
|
crime: string, // crime currently attempting, if any
|
||||||
|
location: string, // location of the task, if any
|
||||||
|
gymStatType: string, // stat being trained at the gym, if any
|
||||||
|
factionWorkType: string, // faction work type being performed, if any
|
||||||
|
}
|
8
doc/source/netscript/sleeveapi/shockRecovery.rst
Normal file
8
doc/source/netscript/sleeveapi/shockRecovery.rst
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
shockRecovery() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: shockRecovery(sleeveNumber)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to start recovery.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not this action was set successfully.
|
8
doc/source/netscript/sleeveapi/synchronize.rst
Normal file
8
doc/source/netscript/sleeveapi/synchronize.rst
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
synchronize() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: synchronize(sleeveNumber)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to start synchronizing.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not this action was set successfully.
|
10
doc/source/netscript/sleeveapi/takeUniversityCourse.rst
Normal file
10
doc/source/netscript/sleeveapi/takeUniversityCourse.rst
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
takeUniversityCourse() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: takeUniversityCourse(sleeveNumber, university, className)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to start taking class.
|
||||||
|
:param string university: name of the university to attend.
|
||||||
|
:param string className: name of the class to follow.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not this action was set successfully.
|
9
doc/source/netscript/sleeveapi/travel.rst
Normal file
9
doc/source/netscript/sleeveapi/travel.rst
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
travel() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: travel(sleeveNumber, cityName)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to travel.
|
||||||
|
:param string cityName: name of the destination city.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not the sleeve reached destination.
|
9
doc/source/netscript/sleeveapi/workForCompany.rst
Normal file
9
doc/source/netscript/sleeveapi/workForCompany.rst
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
workForCompany() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: workForCompany(sleeveNumber, companyName)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to work for the company.
|
||||||
|
:param string companyName: name of the company to work for.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not the sleeve started working or this company.
|
10
doc/source/netscript/sleeveapi/workForFaction.rst
Normal file
10
doc/source/netscript/sleeveapi/workForFaction.rst
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
workForFaction() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: workForFaction(sleeveNumber, factionName, factionWorkType)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to work for the faction.
|
||||||
|
:param string factionName: name of the faction to work for.
|
||||||
|
:param string factionWorkType: name of the action to perform for this faction.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not the sleeve started working or this faction.
|
10
doc/source/netscript/sleeveapi/workoutAtGym.rst
Normal file
10
doc/source/netscript/sleeveapi/workoutAtGym.rst
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
workoutAtGym() Netscript Function
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. js:function:: workoutAtGym(sleeveNumber, gymName, stat)
|
||||||
|
|
||||||
|
:param int sleeveNumber: index of the sleeve to workout at the gym.
|
||||||
|
:param string gymName: name of the gym.
|
||||||
|
:param string stat: name of the stat to train.
|
||||||
|
|
||||||
|
Return a boolean indicating whether or not the sleeve started working out.
|
@ -90,6 +90,7 @@ export let CONSTANTS: IMap<any> = {
|
|||||||
ScriptGetHackTimeRamCost: 0.05,
|
ScriptGetHackTimeRamCost: 0.05,
|
||||||
ScriptGetFavorToDonate: 0.10,
|
ScriptGetFavorToDonate: 0.10,
|
||||||
ScriptCodingContractBaseRamCost:10,
|
ScriptCodingContractBaseRamCost:10,
|
||||||
|
ScriptSleeveBaseRamCost: 0, // TODO: let big boss figure out balance.
|
||||||
|
|
||||||
ScriptSingularityFn1RamCost: 1,
|
ScriptSingularityFn1RamCost: 1,
|
||||||
ScriptSingularityFn2RamCost: 2,
|
ScriptSingularityFn2RamCost: 2,
|
||||||
|
@ -28,6 +28,7 @@ import { Factions,
|
|||||||
factionExists } from "./Faction/Factions";
|
factionExists } from "./Faction/Factions";
|
||||||
import { joinFaction,
|
import { joinFaction,
|
||||||
purchaseAugmentation } from "./Faction/FactionHelpers";
|
purchaseAugmentation } from "./Faction/FactionHelpers";
|
||||||
|
import { FactionWorkType } from "./Faction/FactionWorkTypeEnum";
|
||||||
import { getCostOfNextHacknetNode,
|
import { getCostOfNextHacknetNode,
|
||||||
purchaseHacknet } from "./HacknetNode";
|
purchaseHacknet } from "./HacknetNode";
|
||||||
import {Locations} from "./Locations";
|
import {Locations} from "./Locations";
|
||||||
@ -60,6 +61,7 @@ import {StockMarket, StockSymbols, SymbolToStockMap,
|
|||||||
PositionTypes, placeOrder, cancelOrder} from "./StockMarket/StockMarket";
|
PositionTypes, placeOrder, cancelOrder} from "./StockMarket/StockMarket";
|
||||||
import { getStockmarket4SDataCost,
|
import { getStockmarket4SDataCost,
|
||||||
getStockMarket4STixApiCost } from "./StockMarket/StockMarketCosts";
|
getStockMarket4STixApiCost } from "./StockMarket/StockMarketCosts";
|
||||||
|
import { SourceFileFlags } from "./SourceFile/SourceFileFlags"
|
||||||
import {TextFile, getTextFile, createTextFile} from "./TextFile";
|
import {TextFile, getTextFile, createTextFile} from "./TextFile";
|
||||||
|
|
||||||
import {unknownBladeburnerActionErrorMessage,
|
import {unknownBladeburnerActionErrorMessage,
|
||||||
@ -71,6 +73,7 @@ import {WorkerScript, workerScripts,
|
|||||||
import {makeRuntimeRejectMsg, netscriptDelay,
|
import {makeRuntimeRejectMsg, netscriptDelay,
|
||||||
runScriptFromScript} from "./NetscriptEvaluator";
|
runScriptFromScript} from "./NetscriptEvaluator";
|
||||||
import {NetscriptPort} from "./NetscriptPort";
|
import {NetscriptPort} from "./NetscriptPort";
|
||||||
|
import {SleeveTaskType} from "./PersonObjects/Sleeve/SleeveTaskTypesEnum"
|
||||||
|
|
||||||
import {Page, routing} from "./ui/navigationTracking";
|
import {Page, routing} from "./ui/navigationTracking";
|
||||||
import {numeralWrapper} from "./ui/numeralFormat";
|
import {numeralWrapper} from "./ui/numeralFormat";
|
||||||
@ -4807,7 +4810,257 @@ function NetscriptFunctions(workerScript) {
|
|||||||
}
|
}
|
||||||
return contract.getMaxNumTries() - contract.tries;
|
return contract.getMaxNumTries() - contract.tries;
|
||||||
},
|
},
|
||||||
}
|
}, // End coding contracts
|
||||||
|
sleeve : {
|
||||||
|
getNumSleeves : function() {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("getNumSleeves", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "getNumSleeves() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("getNumSleeves", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
return Player.sleeves.length;
|
||||||
|
},
|
||||||
|
shockRecovery : function(sleeveNumber=0) {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("shockRecovery", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "shockRecovery() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("shockRecovery", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.shockRecovery(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].shockRecovery(Player);
|
||||||
|
},
|
||||||
|
synchronize : function(sleeveNumber=0) {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("synchronize", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "synchronize() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("synchronize", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.synchronize(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].synchronize(Player);
|
||||||
|
},
|
||||||
|
commitCrime : function(sleeveNumber=0, crimeName="") {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("commitCrime", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "commitCrime() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("commitCrime", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.commitCrime(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].commitCrime(Player, crimeName);
|
||||||
|
},
|
||||||
|
takeUniversityCourse : function(sleeveNumber=0, universityName="", className="") {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("takeUniversityCourse", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "takeUniversityCourse() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("takeUniversityCourse", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.takeUniversityCourse(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].takeUniversityCourse(Player, universityName, className);
|
||||||
|
},
|
||||||
|
travel : function(sleeveNumber=0, cityName="") {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("travel", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "travel() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("travel", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.travel(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].travel(Player, cityName);
|
||||||
|
},
|
||||||
|
workForCompany : function(sleeveNumber=0, companyName="") {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("workForCompany", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "workForCompany() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("workForCompany", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.workForCompany(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].workForCompany(Player, companyName);
|
||||||
|
},
|
||||||
|
workForFaction : function(sleeveNumber=0, factionName="", workType="") {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("workForFaction", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "workForFaction() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("workForFaction", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.workForFaction(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].workForFaction(Player, factionName, workType);
|
||||||
|
},
|
||||||
|
workoutAtGym : function(sleeveNumber=0, gymName="", stat="") {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("workoutAtGym", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "workoutAtGym() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("workoutAtGym", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.workoutAtGym(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Player.sleeves[sleeveNumber].workoutAtGym(Player, gymName, stat);
|
||||||
|
},
|
||||||
|
getStats : function(sleeveNumber=0) {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("workoutAtGym", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "getStats() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("workoutAtGym", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.workoutAtGym(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sl = Player.sleeves[i];
|
||||||
|
return {
|
||||||
|
shock: sl.shock,
|
||||||
|
sync: sl.sync,
|
||||||
|
hacking_skill: sl.hacking_skill,
|
||||||
|
strength: sl.strength,
|
||||||
|
defense: sl.defense,
|
||||||
|
dexterity: sl.dexterity,
|
||||||
|
agility: sl.agility,
|
||||||
|
charisma: sl.charisma,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getTask : function(sleeveNumber=0) {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("getTask", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "getTask() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("getTask", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.getTask(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sl = Player.sleeves[sleeveNumber];
|
||||||
|
return {
|
||||||
|
task: SleeveTaskType[sl.currentTask],
|
||||||
|
crime: sl.crimeType,
|
||||||
|
location: sl.currentTaskLocation,
|
||||||
|
gymStatType: sl.gymStatType,
|
||||||
|
factionWorkType: FactionWorkType[sl.factionWorkType],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getInformation : function(sleeveNumber=0) {
|
||||||
|
if (workerScript.checkingRam) {
|
||||||
|
return updateStaticRam("getInformation", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
}
|
||||||
|
if (Player.bitNodeN !== 10 && !SourceFileFlags[10]) {
|
||||||
|
throw makeRuntimeRejectMsg(workerScript, "getInformation() failed because you do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10");
|
||||||
|
}
|
||||||
|
updateDynamicRam("getInformation", CONSTANTS.ScriptSleeveBaseRamCost);
|
||||||
|
if (sleeveNumber >= Player.sleeves.length || sleeveNumber < 0) {
|
||||||
|
workerScript.log(`ERROR: sleeve.getInformation(${sleeveNumber}) failed because it is an invalid sleeve number.`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sl = Player.sleeves[sleeveNumber];
|
||||||
|
return {
|
||||||
|
city: sl.city,
|
||||||
|
hp: sl.hp,
|
||||||
|
jobs: Object.keys(Player.jobs), // technically sleeves have the same jobs as the player.
|
||||||
|
jobTitle: Object.values(Player.jobs),
|
||||||
|
maxHp: sl.max_hp,
|
||||||
|
tor: SpecialServerIps.hasOwnProperty("Darkweb Server"), // There's no reason not to give that infomation here as well. Worst case scenario it isn't used.
|
||||||
|
|
||||||
|
mult: {
|
||||||
|
agility: sl.agility_mult,
|
||||||
|
agilityExp: sl.agility_exp_mult,
|
||||||
|
companyRep: sl.company_rep_mult,
|
||||||
|
crimeMoney: sl.crime_money_mult,
|
||||||
|
crimeSuccess: sl.crime_success_mult,
|
||||||
|
defense: sl.defense_mult,
|
||||||
|
defenseExp: sl.defense_exp_mult,
|
||||||
|
dexterity: sl.dexterity_mult,
|
||||||
|
dexterityExp: sl.dexterity_exp_mult,
|
||||||
|
factionRep: sl.faction_rep_mult,
|
||||||
|
hacking: sl.hacking_mult,
|
||||||
|
hackingExp: sl.hacking_exp_mult,
|
||||||
|
strength: sl.strength_mult,
|
||||||
|
strengthExp: sl.strength_exp_mult,
|
||||||
|
workMoney: sl.work_money_mult,
|
||||||
|
},
|
||||||
|
|
||||||
|
timeWorked: sl.currentTaskTime,
|
||||||
|
earningsForSleeves : {
|
||||||
|
workHackExpGain: sl.earningsForSleeves.hack,
|
||||||
|
workStrExpGain: sl.earningsForSleeves.str,
|
||||||
|
workDefExpGain: sl.earningsForSleeves.def,
|
||||||
|
workDexExpGain: sl.earningsForSleeves.dex,
|
||||||
|
workAgiExpGain: sl.earningsForSleeves.agi,
|
||||||
|
workChaExpGain: sl.earningsForSleeves.cha,
|
||||||
|
workMoneyGain: sl.earningsForSleeves.money,
|
||||||
|
},
|
||||||
|
earningsForPlayer : {
|
||||||
|
workHackExpGain: sl.earningsForPlayer.hack,
|
||||||
|
workStrExpGain: sl.earningsForPlayer.str,
|
||||||
|
workDefExpGain: sl.earningsForPlayer.def,
|
||||||
|
workDexExpGain: sl.earningsForPlayer.dex,
|
||||||
|
workAgiExpGain: sl.earningsForPlayer.agi,
|
||||||
|
workChaExpGain: sl.earningsForPlayer.cha,
|
||||||
|
workMoneyGain: sl.earningsForPlayer.money,
|
||||||
|
},
|
||||||
|
earningsForTask : {
|
||||||
|
workHackExpGain: sl.earningsForTask.hack,
|
||||||
|
workStrExpGain: sl.earningsForTask.str,
|
||||||
|
workDefExpGain: sl.earningsForTask.def,
|
||||||
|
workDexExpGain: sl.earningsForTask.dex,
|
||||||
|
workAgiExpGain: sl.earningsForTask.agi,
|
||||||
|
workChaExpGain: sl.earningsForTask.cha,
|
||||||
|
workMoneyGain: sl.earningsForTask.money,
|
||||||
|
},
|
||||||
|
workRepGain: sl.getRepGain(),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
} // End sleeve
|
||||||
} //End return
|
} //End return
|
||||||
} //End NetscriptFunction()
|
} //End NetscriptFunction()
|
||||||
|
|
||||||
|
@ -125,7 +125,12 @@ let NetscriptFunctions =
|
|||||||
|
|
||||||
// Coding Contract API
|
// Coding Contract API
|
||||||
"codingcontract|attempt|getContractType|getData|getDescription|" +
|
"codingcontract|attempt|getContractType|getData|getDescription|" +
|
||||||
"getNumTriesRemaining";
|
"getNumTriesRemaining|" +
|
||||||
|
|
||||||
|
// Sleeve API
|
||||||
|
"sleeve|getNumSleeves|shockRecovery|synchronize|commitCrime|" +
|
||||||
|
"takeUniversityCourse|travel|workForCompany|workForFaction|workoutAtGym|" +
|
||||||
|
"getStats|getTask|getInformation";
|
||||||
|
|
||||||
var NetscriptHighlightRules = function(options) {
|
var NetscriptHighlightRules = function(options) {
|
||||||
var keywordMapper = this.createKeywordMapper({
|
var keywordMapper = this.createKeywordMapper({
|
||||||
|
Loading…
Reference in New Issue
Block a user