Netscript Singularity Functions

The Singularity Functions are a special set of Netscript functions that are unlocked in BitNode-4. These functions allow you to control many additional aspects of the game through scripts, such as working for factions/companies, purchasing/installing Augmentations, and creating programs.

If you are in BitNode-4, then you will automatically have access to all of these functions. You can use the Singularity Functions in other BitNodes if and only if you have the Source-File for BitNode-4 (aka Source-File 4). Each level of Source-File 4 will open up additional Singularity Functions that you can use in other BitNodes. If your Source-File 4 is upgraded all the way to level 3, then you will be able to access all of the Singularity Functions.

Note that Singularity Functions require a lot of RAM outside of BitNode-4 (their RAM costs are multiplied by 10 if you are not in BitNode-4)

universityCourse(universityName, courseName)
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.

This function will automatically set you to start taking a course at a university. If you are already in the middle of some "working" action (such as working at a company, for a faction, or on a program), then running this function will automatically cancel that action and give you your earnings.

The first argument must be a string with the name of the university. The names are NOT case-sensitive. Note that you must be in the correct city for whatever university you specify. The three universities are:


 * Summit University
 * Rothman University
 * ZB Institute of Technology

The second argument must be a string with the name of the course you are taking. These names are NOT case-sensitive. The available courses are:


 * Study Computer Science
 * Data Structures
 * Networks
 * Algorithms
 * Management
 * Leadership

The cost and experience gains for all of these universities and classes are the same as if you were to manually visit and take these classes.

This function will return true if you successfully start taking the course, and false otherwise.

gymWorkout(gymName, stat)
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.

This function will automatically set you to start working out at a gym to train a particular stat. If you are already in the middle of some "working" action (such as working at a company, for a faction, or on a program), then running this function will automatically cancel that action and give you your earnings.

The first argument must be a string with the name of the gym. The names are NOT case-sensitive. Note that you must be in the correct city for whatever gym you specify. The available gyms are:


 * Crush Fitness Gym
 * Snap Fitness Gym
 * Iron Gym
 * Powerhouse Gym
 * Millenium Fitness Gym

The second argument must be a string with the stat you want to work out. These are NOT case-sensitive. The valid stats are:


 * strength OR str
 * defense OR def
 * dexterity OR dex
 * agility OR agi

The cost and experience gains for all of these gyms are the same as if you were to manually visit these gyms and train

This function will return true if you successfully start working out at the gym, and false otherwise.

travelToCity(cityname)
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.

This function allows the player to travel to any city. The cost for using this function is the same as the cost for traveling through the Travel Agency.

The argument passed into this must be a string with the name of the city to travel to. Note that this argument IS CASE SENSITIVE. The valid cities are:


 * Aevum
 * Chongqing
 * Sector-12
 * New Tokyo
 * Ishima
 * Volhaven

This function will return true if you successfully travel to the specified city and false otherwise.

purchaseTor
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.

This function allows you to automatically purchase a TOR router. The cost for purchasing a TOR router using this function is the same as if you were to manually purchase one.

This function will return true if it successfully purchase a TOR router and false otherwise.

purchaseProgram(programName)
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to use this function.

This function allows you to automatically purchase programs. You MUST have a TOR router in order to use this function.

The argument passed in must be a string with the name of the program (including the ".exe" extension). This argument is NOT case-sensitive.

Example:

The cost of purchasing programs using this function is the same as if you were purchasing them through the Dark Web (using the buy Terminal command).

This function will return true if the specified program is purchased, and false otherwise.

getStats
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.

Returns an object with the Player's stats. The object has the following properties:

Player.hacking

Player.strength

Player.defense

Player.dexterity

Player.agility

Player.charisma

Player.intelligence

Example:

res = getStats; print('My charisma level is: ' + res.charisma);

isBusy
If you are not in BitNode-4, then you must have Level 1 of Source-File 4 in order to run this function.

Returns a boolean indicating whether or not the player is currently performing an 'action'. These actions include working for a company/faction, studying at a univeristy, working out at a gym, creating a program, or committing a crime.

upgradeHomeRam
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function will upgrade amount of RAM on the player's home computer. The cost is the same as if you were to do it manually.

This function will return true if the player's home computer RAM is successfully upgraded, and false otherwise.

getUpgradeHomeRamCost
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

Returns the cost of upgrading the player's home computer RAM.

workForCompany
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function will automatically set you to start working at the company at which you are employed. If you are already in the middle of some "working" action (such as working for a faction, training at a gym, or creating a program), then running this function will automatically cancel that action and give you your earnings.

This function will return true if the player starts working, and false otherwise.

Note that when you are working for a company, you will not actually receive your earnings (reputation, money, experience) until you FINISH the action. This can be an issue if, for example, you only want to work until you get 100,000 company reputation. One small hack to get around this is to continuously restart the action to receive your earnings:

while (getCompanyRep(COMPANY HERE) < VALUE) { workForCompany; sleep(60000); }

This way, your company reputation will be updated every minute.

applyToCompany(companyName, field)
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function will automatically try to apply to the specified company for a position in the specified field. This function can also be used to apply for promotions by specifying the company and field you are already employed at.

The first argument must be a string with the name of the company. This argument IS CASE-SENSITIVE. The second argument must be a string representing the 'field' to which you want to apply. This second argument is NOT case-sensitive. Valid values for the second argument are:


 * software
 * software consultant
 * it
 * security engineer
 * network engineer
 * business
 * business consultant
 * security
 * agent
 * employee
 * part-time employee
 * waiter
 * part-time waiter

This function will return true if you successfully get a job/promotion, and false otherwise. Note that if you are trying to use this function to apply for a promotion and you don't get one, it will return false.

getCompanyRep(companyName)
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function will return the amount of reputation you have at the specified company. If the company passed in as an argument is invalid, -1 will be returned.

The argument passed in must be a string with the name of the company. This argument IS CASE-SENSITIVE.

checkFactionInvitations
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

Returns an array with the name of all Factions you currently have oustanding invitations from.

joinFaction(name)
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function will automatically accept an invitation from a faction and join it.

The argument must be a string with the name of the faction. This name IS CASE-SENSITIVE.

workForFaction(factionName, workType)
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function will automatically set you to start working for the specified faction. Obviously, you must be a member of the Faction or else this function will fail. If you are already in the middle of some "working" action (such as working for a company, training at a gym, or creating a program), then running this function will automatically cancel that action and give you your earnings.

The first argument must be a string with the name of the faction. This argument IS CASE-SENSITIVE. The second argument must be a string with the type of work you want to perform for the faction. The valid values for this argument are:


 * hacking/hacking contracts/hackingcontracts
 * field/fieldwork/field work
 * security/securitywork/security work

This function will return true if you successfully start working for the specified faction, and false otherwise.

Note that when you are working for a faction, you will not actually receive your earnings (reputation, experience) until you FINISH the action. This can be an issue if, for example, you only want to work until you get 100,000 faction reputation. One small hack to get around this is to continuously restart the action to receive your earnings:

while (getFactionRep(FACTION NAME) < VALUE) { workForFaction(FACNAME, WORKTYPE); sleep(60000); }

This way, your faction reputation will be updated every minute.

getFactionRep(factionName)
If you are not in BitNode-4, then you must have Level 2 of Source-File 4 in order to use this function.

This function returns the amount of reputation you have for the specified Faction. The argument must be a string with the name of the Faction. The argument IS CASE-SENSITIVE.

createProgram(programName)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function will automatically set you to start working on creating the specified program. If you are already in the middle of some "working" action (such as working for a company, training at a gym, or taking a course), then running this function will automatically cancel that action and give you your earnings.

The argument passed in must be a string designating the name of the program. This argument is NOT case-sensitive.

Example:

Note that creating a program using this function has the same hacking level requirements as it normally would. These level requirements are:


 * BruteSSH.exe: 50
 * FTPCrack.exe: 100
 * relaySMTP.exe: 250
 * HTTPWorm.exe: 500
 * SQLInject.exe: 750
 * DeepscanV1.exe: 75
 * DeepscanV2.exe: 400
 * ServerProfiler.exe: 75
 * AutoLink.exe: 25

This function returns true if you successfully start working on the specified program, and false otherwise.

commitCrime(crime)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function is used to automatically attempt to commit crimes. If you are already in the middle of some 'working' action (such as working for a company or training at a gym), then running this function will automatically cancel that action and give you your earnings.

The function takes a string that specifies what crime to attempt. This argument is not case-sensitive and is fairly lenient in terms of what inputs it accepts. Here is a list of valid inputs for all of the crimes:

shoplift, rob store, mug, larceny, deal drugs, bond forgery, traffick arms, homicide, grand theft auto, kidnap, assassinate, heist

Note that crimes committed using this function will have all of their earnings halved (this applied for both money and experience!)

This function returns the number of milliseconds it takes to attempt the specified crime (e.g It takes 60 seconds to attempt the 'Rob Store' crime, so running  will return 60000). Warning: I do not recommend using the time returned from this function to try and schedule your crime attempts. Instead, I would use the isBusy Singularity function to check whether you have finished attempting a crime. This is because although the game sets a certain crime to be X amount of seconds, there is no guarantee that your browser will follow that time limit.

getCrimeChance(crime)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function returns your chance of success at commiting the specified crime. The chance is returned as a decimal (i.e. 60% would be returned as 0.6). The argument for this function is a string. It is not case-sensitive and is fairly lenient in terms of what inputs it accepts. Check the documentation for the commitCrime Singularity Function to see examples of valid inputs.

getOwnedAugmentations(purchased=false)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function returns an array containing the names (as strings) of all Augmentations you have. It takes a single optional boolean argument as to whether to returned array should include Augmentations you have purchased but not yet installed. By default, this argument is false which means that the return value will NOT have the purchased Augmentations.

getAugmentationsFromFaction(facName)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

Returns an array containing the names (as strings) of all Augmentations that are available from the specified faction. The argument must be a string with the faction's name. This argument is case-sensitive.

getAugmentationCost(augName)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function returns an array with two elements that gives the cost for the specified Augmentation. The first element in the returned array is the reputation requirement of the Augmentation, and the second element is the money cost.

The argument passed in must be a string with the name of the Augmentation. This argument IS CASE-SENSITIVE. If an invalid Augmentation name is passed in, this function will return the array [-1, -1].

purchaseAugmentation(factionName, augName)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function will try to purchase the specified Augmentation through the given Faction.

The two arguments must be strings specifying the name of the Faction and Augmentation, respectively. These arguments are both CASE-SENSITIVE.

This function will return true if the Augmentation is successfully purchased, and false otherwise.

installAugmentations(cbScript)
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.

This function will automatically install your Augmentations, resetting the game as usual.

It will return true if successful, and false otherwise.

This function takes a single optional parameter that specifies a callback script. This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer. This argument, if used, must be a string with the name of the script.