DOC: Move all docs into en/ subdirectory (#1505)

* DOC: Move all docs into en/ subdirectory

PR #1502 is working on adding a Chinese translation to the docs. In
general, I encouraged this (in #1452) as a path towards getting useful
translated content in the game without requiring a massive
refactor/rearchitecting of everything.

To support this, this takes the first step of moving our docs into an
en/ subdirectory, so that other languages can live alongside. No effort
is made at this time to support or select between alternate languages;
this is a pure-rename refactor.
This commit is contained in:
David Walker
2025-07-19 19:15:56 -07:00
committed by GitHub
parent a2a4a2a0b4
commit 4059be3d8c
74 changed files with 150 additions and 139 deletions
@@ -0,0 +1,238 @@
# Introduction
After a player destroys their first [BitNode](./bitnodes.md), they are usually overwhelmed and do not know which BitNode they should do next. Some BitNodes even have peculiarities that tend to catch newbies off guard and ruin their run.
At first, we need to make this clear: There is no "perfect" BitNode order. Everybody has their own preferred play style, so a good order for this player may be a bad order for other players. This is why this guide does not show a single specific order.
Doing BitNodes in chronological order (BN1->BN2->BN3->BN4->BN5->etc.) is a classic mistake. Don't do that.
# BitNode characteristic
With each BitNode, you need to consider:
- Does it unlock a new mechanic?
- Is the new mechanic a new "gameplay" or a "utility" one (a mechanic that helps other mechanics)?
- How does this new mechanic interact with other mechanics?
- Are there peculiarities that I should know beforehand?
- How harsh are the BitNode's multipliers?
Some BitNodes unlock new mechanics, while others improve or change original mechanics in BitNode 1. This is a very rough introduction:
- New gameplay:
- Gang (BitNode 2): Simple and useful.
- Corporation (BitNode 3): Extremely complicated, extremely powerful, and extremely fast.
- Bladeburner (BitNode 6, BitNode7): Relatively simple, slow, and not be nerfed too much in most BitNodes.
- Utility mechanics:
- Singularity (BitNode 4): Automation APIs.
- Intelligence (BitNode 5): Permanent stat that buffs many things and permanent access to `Formulas.exe`.
- HackNet server (BitNode 9): Replace HackNet Node with HackNet Server. Buff many mechanics.
- Sleeves + Grafting (BitNode 10): Help other mechanics.
- Stanek's Gift (BitNode 13): Buff many mechanics.
- Other:
- BitNode 8: Enhance the stock market.
- BitNode 11: It gives some rewards, but they are not very interesting.
- BitNode 12: Grant free NeuroFlux Governor (NFG) based on the Source-File level.
- BitNode 14: Enhance IPvGO.
Some mechanics synergize well with other mechanics. For example, in order to create a gang outside of BitNode 2, you need to "farm karma" (more about this later), and Sleeves can help you do it faster.
Some mechanics have peculiarities that you should know beforehand. For example, enabling territory clashes too soon will make the player lose all territory and ruin their gang.
All BitNodes have a unique set of multipliers that affect the difficulty of that BitNode. You can see these multipliers when choosing a BitNode in the BitVerse. [Source-File](./sourcefiles.md) 5 gives you access to these multipliers when you are already in a BitNode. Some BitNodes are much harder than others. It's recommended to unlock other Source-Files before trying to beat these hard BitNodes. Note that the "Difficulty" value of a BitNode in the BitVerse may be a bit misleading in some cases. Understanding the difficulty of a BitNode is much harder than just choosing between "easy", "normal" and "hard".
# BitNode analysis
## BitNode 1
This is the easiest BitNode, and its Source-File gives a very strong buff to most multipliers. You should repeat this BitNode to get its powerful buff.
## BitNode 2
This BitNode unlocks [Gang](./gang.md). Gang is a simple and useful mechanic.
- Its benefits do not reset when you install augmentations or soft reset.
- Good income.
- Give you access to most augmentations. If you are in BitNode 2, your Gang will offer The Red Pill. This is arguably the biggest benefit of Gang. Farming reputation with factions to get access to their augmentations is the most time-consuming thing of a run. With Gang, you have access to most augmentations, so you only need to join 1 more faction to get NFG.
In order to create a gang, you need to "farm karma". Committing crimes reduces your karma, and Gang is unlocked when your karma is less than or equal to 54000 (this is a constant in all BitNodes). Farming karma is very slow, and Sleeves (BitNode 10) speed it up tremendously. Sleeves are copies of yourself, and you can let them do many tasks. When you set them to "Commit Crime", their action also reduces your karma as if you do it yourself.
When you enter this BitNode, there are two things that you need to keep in mind:
- There is no karma requirement in BitNode 2, but creating a gang too soon is a mistake. Having an adequate income boosts the early stage of Gang significantly. Outside BitNode 2, this is not a problem. When you finish farming karma, you usually have a decent income.
- Territory is important. Enabling territory clashes when your gang is still too weak is a serious mistake. You may lose all territory. On the other hand, enabling territory clashes too late is also bad. You need to find a balance here. In short, do it soon, but not too soon.
## BitNode 3
This BitNode unlocks [Corporation](./corporations.md). Corporation is one of the most controversial mechanics in Bitburner. As I said before, it's extremely complicated, extremely powerful, and extremely fast. If you have a good corporation script, you can ignore all other mechanics and speedrun most BitNodes. However, "having a good corporation script" is a serious challenge. Writing that "good script" may take days or weeks, assuming that you read the documentation carefully and have good advice from other experienced players (please join our [Discord](https://discord.gg/TFc3hKD) server and discuss there). If you try to do it blindly, Corporation is the worst mechanic.
If you want to try this mechanic, you must remember this advice: When in doubt, check the in-game documentation. Corporation has the most intensive documentation in Bitburner. Note that you do not have to read all of them in one go. I recommend that you read the first 4 sections. They are the most important sections for newbies. After that, you can read the following sections at your leisure.
## BitNode 4
This BitNode unlocks Singularity APIs in the `singularity` namespace (`ns.singularity`). Do you hate doing things manually (e.g., buying TOR, buying programs, connecting servers, installing backdoor)? These APIs let you do all of them programmatically.
If you use these APIs outside BitNode 4 and do not have Source-File 4.2 or Source-File 4.3, the RAM cost is multiplied by 4 or 16, respectively. This means that if you want to use this Source-File in other BitNodes, you have to complete this BitNode three times in one go. Otherwise, you will have to pay the massive RAM cost.
This BitNode's multipliers are a bit harsh, especially if you only have Source-File 1. Keep this in mind if you choose it as the second BitNode after completing BitNode 1.
## BitNode 5
This BitNode unlocks:
- [Intelligence](./intelligence.md): It's a permanent stat that buffs many things.
- BitNode's multiplier data in UI and NS APIs.
- Permanent access to `Formulas.exe`. Formulas APIs are useful for many mechanics, not just hacking. Having free access to them is a very good benefit.
Source-File 5 also buffs hacking-related multipliers. Hacking is a core mechanic, so it's always good to have higher hacking-related multipliers.
## BitNode 6 and BitNode 7
These BitNodes unlock [Bladeburner](./bladeburners.md). Bladeburner gives you an alternative way to destroy WD. In Bladeburner, you can do many actions (General, Contracts, Operations, Black Operations) to get money, experience, Bladeburner's rank, etc. You can destroy WD after completing the last Black Operation.
Bladeburner is a slow mechanic, but it's rarely nerfed in other BitNodes. Even when it's nerfed, the nerf is not too severe. This is why Bladeburner is a good choice in extremely hard BitNodes (e.g., BitNode 9, BitNode 13).
Both BitNodes grant Bladeburner access outside these BitNodes. The differences are:
- BitNode 6 does not have Bladeburner's penalty modifiers. Its Source-File buffs combat stats' multipliers.
- BitNode 7 has Bladeburner's penalty modifiers. Its Source-File buffs Bladeburner's multipliers. Source-File 7.3 gives you free access to "The Blade's Simulacrum" augmentation. You will immediately receive this augmentation after joining the Bladeburner division.
When you are performing Bladeburner action, you cannot do other actions (working, committing crimes, etc.). It's a downside of Bladeburner. "The Blade's Simulacrum" augmentation removes this restriction by allowing you to perform Bladeburner actions and other actions at the same time.
This mechanic is time-gated by the slow generation speed of contracts/operations. Sleeves speed it up a lot.
You must be careful with chaos and Synthoid population. The UI shows you many hints about the effect of dangerous actions on chaos and Synthoid population. You should keep an eye on those hints. Generally, you must keep the chaos level low and not kill too much Synthoid population.
## BitNode 8
This BitNode unlocks 2 new features for the stock market: short stock and limit/stop order.
This is a very challenging BitNode. It disables most normal ways to earn money so that you have to use the stock market as your source of income. Before having access to 4S Market Data, finding good stocks to invest in is pretty hard. You need to have a good pre-4S stock market script; otherwise, it's a slow run. You should take a look at stock manipulation. Hacking does not give you money, but hacking and growing a server that has a corresponding stock still influence that stock's price.
Grafting is very useful in this BitNode. Losing capital after each reset sets you back a lot. Grafting allows you to continuously install augmentations without resetting.
## BitNode 9
This BitNode replaces HackNet Node with [HackNet Server](./hacknetservers.md).
HackNet Servers generate `hash`. You can sell `hash` for money or a variety of upgrades that boost other mechanics. You can also run scripts on these servers, but doing it reduces the amount of `hash` produced.
Among the benefits of its Source-File, 2 most important ones are:
- Source-File 9.2: Start with 128GB of RAM on your home computer when entering a new BitNode.
- Source-File 9.3: Grant a highly upgraded Hacknet Server when entering a new BitNode. This effect only applies when entering a new BitNode, not when installing augmentations.
This BitNode's multipliers are extremely harsh. You should prepare carefully before entering it.
This BitNode disables private servers and significantly raises the RAM cost of your home computer. It also heavily nerfs hacking-related multipliers. You must find a way to properly utilize HackNet servers and their variety of upgrades. Inside this BitNode, you get the effect of Source-File 9.3 even before getting that Source-File. The free highly upgraded Hacknet Server is an extremely important asset at the start of the run.
## BitNode 10
This BitNode unlocks [Sleeves](./sleeves.md) and [Grafting](./grafting.md).
Sleeves are your "copies", so they can do most things that you can do (studying, working, committing crimes, etc.). This mechanic synergizes well with mechanics involving slow tasks that can be boosted by doing things simultaneously (e.g., farming karma for Gang, generating contracts/operations for Bladeburner). You can buy up to 5 Sleeves from "The Covenant" faction. Each Source-File level grants you a Sleeve.
Grafting is a special way of installing augmentations.
- Grafting bypasses the need of resetting the main body and farming faction reputation.
- The augmentation is installed immediately after the grafting process finishes.
- The requirement of faction reputation is ignored when grafting.
- Grafting gives you a debuff that decreases many multipliers. This debuff can be removed by installing a special augmentation.
You should keep these things in mind:
- You cannot buy Sleeves and their memory upgrades outside this BitNode.
- Sleeves are expensive. The last Sleeve costs 100e15 (100q). You will need a [batcher](../programming/hackingalgorithms.md) or a corporation.
- Due to the debuff, grafting is sometimes underestimated and underutilized. When grafting, you need to choose the augmentations carefully. If you choose appropriate ones, grafting is a very strong mechanic.
This BitNode's multipliers are fairly harsh. You will need a source of high income for the last Sleeve anyway, so harsh multipliers should not be a big problem. Utilizing the grafting mechanic properly lessens the harsh multipliers.
## BitNode 11
This BitNode does not unlock or enhance any mechanics.
Its Source-File's rewards:
- Company favor increases the player's salary and reputation gain.
- Increase the player's company salary and reputation gain multipliers.
- Reduce the price increase for every augmentation bought.
This BitNode's multipliers are harsh, but its rewards are mediocre, especially when comparing them to rewards in other BitNodes.
## BitNode 12
This is a special BitNode. In other BitNodes, the BitNode's multipliers are always the same, regardless of how many times you enter it, and the rewards only scale up to Source-File level 3. In BitNode 12, the BitNode's multipliers and the rewards scale to the Source File level, and the Source File level does not have a theoretical upper limit. For example, if you complete BitNode 12 one hundred times, you will have Source-File 12.100, and both the BitNode's multipliers and the rewards scale up to that level.
Source-File 12 grants free NFG levels based on the Source-File's level.
In this BitNode, you need to constantly change your strategy, depending on the current BitNode's multipliers. These multipliers become increasingly harsher when you go higher. It's recommended to unlock all mechanics before trying high levels.
Note that, although there is no limit in theory, there is still a practical limit to how high you can go. You won't need to worry about that limit for a long time, though.
## BitNode 13
This BitNode unlocks [Stanek's Gift](./stanek.md). Stanek's Gift is a grid that you can freely put fragments on. There are many types of fragments, and each type boosts a different mechanic.
This mechanic is versatile. It can boost many different mechanics. You can freely decide how to boost them by choosing appropriate fragments and arranging those fragments on the grid as you like.
Stanek's Gift decreases many multipliers by 10%. "Church of the Machine God" faction offers 2 augmentations to gradually remove this penalty.
You must accept Stanek's Gift before purchasing any augmentations. NFG is the only exception. Due to the effect of Source-File 7.3, you must accept Stanek's Gift before joining the Bladeburner division if you have that Source-File.
This BitNode's multipliers are extremely harsh. You should prepare carefully before entering it. Utilizing the Gift's bonuses is crucial to lessen the harsh multipliers.
## BitNode 14
This BitNode's Source-File buffs IPvGO's benefits and unlocks the ability to use cheat APIs. Cheat APIs may help you tremendously if you use them strategically, especially when playing against hard opponents. The Source-File's rewards:
- Higher stat multipliers from Node Power.
- Unlock `ns.go.cheat` APIs.
- Higher maximum favor that you can gain for each faction from IPvGO.
The last reward is pretty interesting. If you can consistently win several games in a row and get a higher favor bonus, you will cut down the time to reach 150 favor points with IPvGO factions and have access to their augmentations much sooner.
This BitNode's multipliers are fairly harsh, but IPvGO's multipliers are buffed significantly. If you use IPvGO, even a slightly improved version of the tutorial script will help you complete this BitNode without much trouble.
# Order advice
## The first choice
Repeating BitNode 1 is the best choice.
- There is no penalty modifier in BitNode 1. It's the best place for you to improve your scripts and prepare for harder BitNodes.
- The buff is huge. When you upgrade Source-File 1.1 to Source-File 1.2, you get a buff equivalent to 8 levels of NFG.
You should repeat it at least once to get Source-File 1.2. Most people complete this BitNode in one go and get Source-File 1.3.
## Early BitNodes
If you want to try different gameplay, BitNode 2 is a good choice. Gang is simple and useful in most BitNodes.
BitNode 5 is another good choice. Intelligence boosts many things, and it's permanent. Free access to Formulas APIs is very nice. A buff to hacking-related multipliers is useful in all BitNodes.
## Situational BitNodes and Hard BitNodes
If you hate doing things manually and want to automate everything, you will have to use Singularity APIs of BitNode 4. Note that this BitNode is not easy. Its multipliers are harsh, especially if you skip early BitNodes and only have Source-File 1. You also need to complete it entirely and get Source-File 4.3. Otherwise, you will have to pay the massive RAM cost. If you don't mind doing things manually, Source-File 4 is not really important.
Both BitNode 6 and BitNode 7 unlock Bladeburner. It's slow, but it's a good choice to beat extremely hard BitNodes (BitNode 9, BitNode 13). Ideally, you should complete both of them. However, if you decide to only use Bladeburner when needed and do not want to spend too much time doing both BitNodes, you can choose to complete only one of them. BitNode 6 is easier than BitNode 7, but Source-File 7 buffs Bladeburner's multipliers and gives you free access to "The Blade's Simulacrum" augmentation.
BitNode 10 unlocks 2 strong mechanics at the same time. Sleeves synergize well with many mechanics, especially Gang and Bladeburner. Grafting is useful in all BitNodes. Most people complete this BitNode in one go to get 8 Sleeves, but if you are in a rush, you can complete it once and get only Source-File 10.1. If you buy all 5 Sleeves from "The Covenant" faction, you will have 6 Sleeves and access to Grafting. That's not ideal, but still good enough.
BitNode 14 enhances IPvGO. IPvGO is _not_ locked behind this BitNode. It's available at the start of the game. You can play it by going to CIA (Sector-12) or using APIs in `ns.go`. If you have not touched that mechanic, you should do it now. IPvGO is tuned so that it still gives adequate benefits even if your script is only a slightly improved version of the tutorial script. Source-File 14 improves IPvGO's benefits and unlocks cheat APIs, which you can use to improve your win rate.
BitNode 9 and BitNode 13 unlock HackNet server and Stanek's Gift, respectively. They are powerful mechanics that buff other mechanics, but these BitNodes are extremely hard. You should prepare carefully before entering them.
## Challenging BitNodes
It's hard to recommend the priority of these BitNodes. They offer unique challenges. Some people can tackle them as early BitNodes without any problems. Some people complete them at the end, for the sake of completion. Some people despise and never touch them.
BitNode 3: This BitNode is not exactly hard. You can avoid the Corporation mechanic and complete it without any problems by using any mechanics that you have. Many people use Gang or just hacking scripts to beat it. However, that is not the point of BitNode 3. This BitNode unlocks Corporation, which is one of the most controversial mechanics in Bitburner. You either love it or hate it. Feel free to choose your path.
BitNode 8: You are forced to engage the stock market in this BitNode. The hardest part is to write a good (or at least usable) pre-4S stock market script. Even with good scripts, it still takes a long time to complete this BitNode. This is an interesting challenge.
## Special BitNodes
BitNode 12 is a unique BitNode. In the first dozen levels, it's an easy one, and you can beat it with any mechanics. When the difficulty ramps up due to increasingly harsher multipliers, you have to constantly change your strategy and use different mechanics. Thinking outside the box and exploiting oversights in the interaction of mechanics are the keys to success. You should try this BitNode after unlocking all mechanics.
## Bad BitNodes
BitNode 11 is hard, but its rewards are mediocre. You should only do it at the end, for the sake of completion.
@@ -0,0 +1,84 @@
# Which BitNode should I try next?
After destroying their first [BitNode](bitnodes.md), many players wonder which [BitNode](bitnodes.md) they should tackle next.
This guide hopefully helps answer that question.
As a player, you are not forced to tackle the [BitNodes](bitnodes.md) in any particular order.
You are free to choose whichever ones you want.
The "best" order can vary between players, depending on what you like to do any what kind of player you are.
## tl;dr
BN1, BN2 and BN5 are great starters.
BN4 and BN6 are also good to do early if their mechanics appeal to you.
BN10 has interesting mechanics if you can generate lots of money.
BN9, BN13 and BN14 are tough but have interesting new mechanics
BN3 has a very tough mechanic to automate with unparalleled power.
BN7, BN8 and BN11 are tough with little to benefit newer players.
BN12 is easy to start but quickly ramps up in difficulty.
## Good early BitNodes
BN1 is the introductory [BitNode](bitnodes.md) with no difficulty modifiers to slow you down.
Its [Source-File](sourcefiles.md) is extremely powerful as it raises all multipliers by a significant amount.
There are no other [BitNodes](bitnodes.md) which significantly simplify this one or make it particularly easier, so BN1.2 and BN1.3 are natural first choices.
BN2 introduces the [Gang](gang.md) mechanic.
This mechanic provides both a good source of income and a large supply of [Augmentations](../basic/augmentations.md) from a single faction.
Using the mechanic in other [BitNodes](bitnodes.md) requires a sufficiently low karma which requires a significant time investment or [Sleeves](sleeves.md).
BN5 grants [Intelligence](intelligence.md), a stat that persists between [BitNodes](bitnodes.md).
The [Source-File](sourcefiles.md) bonuses are very helpful for [hacking](../basic/hacking.md) and also give `Formulas.exe`.
Because of all the benefits this [BitNode](bitnodes.md) provides, it's definitely worth getting early.
## Depends on your priorities
BN4 gives access to the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.singularity.md).
This mechanic allows the automation of many actions directly affecting the player.
If this appeals to you then you should prioritize this BitNode.
Due to the [RAM](../basic/ram.md) cost, it's strongly recommended to complete BN4.3 before using the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.singularity.md) in other [BitNodes](bitnodes.md).
BN6 introduces the [Bladeburner](bladeburners.md) mechanic and its corresponding [Bladeburner API](https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.bladeburner.md).
Bladeburner is an alternative method to beat BitNodes which doesn't rely on money or hacking skill.
[Sleeves](sleeves.md) help complete BN6 more quickly since they can share some Bladeburner tasks with the player but aren't a requirement.
BN10 unlocks two new mechanics: [Sleeves](sleeves.md) and [Grafting](grafting.md).
[Sleeves](sleeves.md) act as additional players and can perform tasks like studying, training, crime and working for factions independently of the player.
[Grafting](grafting.md) installs augmentations without a soft reset.
Both are very useful to have but require large amounts of money to use to their fullest extent.
Each [Source-File](sourcefiles.md) grants an additional sleeve and up to five additional sleeves may be purchased from a faction only in this BitNode.
## Tough but has new mechanics
BN3 makes available the [Corporation](corporations.md) mechanic.
This mechanic can provide effectively limitless wealth and [Faction](../basic/factions.md) [Reputation](../basic/reputation.md), but is very complex and documentation-dependent.
Using the mechanic in other [BitNodes](bitnodes.md) requires $150 billion so another source of starting wealth is still needed.
Overall, this [BitNode](bitnodes.md) is considered an advanced one even if there are no particular [BitNodes](bitnodes.md) that should go before it.
BN9 introduces the [Hacknet Server](hacknetservers.md) mechanic to replace the [Hacknet Nodes](../basic/hacknet_nodes.md) mechanic.
[Hacknet Servers](hacknetservers.md) generate hashes instead of money directly and these hashes can be traded for various benefits.
Players who find [RAM](../basic/ram.md) tight at the beginning of a [BitNode](bitnodes.md) will find BN9.2's bonus to start with 128GiB in their home machine.
BN13 introduces [Stanek's Gift](stanek.md), a powerful augmentation that can provide bonuses to skills, [hacknet](../basic/hacknet_nodes.md) production and costs, working and [crime](../basic/crimes.md) gains, and [hacking](../basic/hacking.md) power and speed.
These bonuses are versatile but not enough to offset the challenge of the BitNode itself.
BN14 is a relatively new BitNode focused on [IPvGO](../programming/go_algorithms.md).
Automating the mechanic is challenging but it provides a wide variety of bonuses.
## Save these for later
BN7 used to give access to the [Bladeburner API](https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.bladeburner.md), but now it doesn't.
Because of that change this [BitNode](bitnodes.md) is relatively low priority and should definitely happen after BN6.
The benefit for completing BN7.3 is an aug that lets the player perform [Bladeburner](bladeburners.md) and non-Bladeburner actions at the same time.
BN8 focuses on the stock market to the point that there's no other way to make money.
Completing at least BN10.1 is highly recommended in order to have [Grafting](grafting.md).
This ensures that you don't need to install [Augmentations](../basic/augmentations.md) and lose market gains realized so far.
Having a good hacking script can also help in order to manipulate the market.
BN11 doesn't have any new mechanics associated with it beyond a mild bonus to work income.
The [Source-File](sourcefiles.md) makes buying large numbers of [Augmentations](../basic/augmentations.md) cheaper but isn't worth going out of your way for.
Overall, this [BitNode](bitnodes.md) is very difficult for not much in return.
BN12 is BN1, just a little bit harder each time you complete it and continuing forever.
This requires a variety of strategies using different mechanics as the penalties grow.
The reason this isn't an early recommendation is that the [Source-File](sourcefiles.md) is relatively weak for the increasing amount of effort required.
@@ -0,0 +1,253 @@
# BitNodes
A BitNode is an important part of the game's storyline.
In the game, you discover what BitNodes are by following the trail of clues left by the mysterious `jump3r`.
## What is a BitNode
A BitNode is the complex simulated reality in which you reside.
By following the messages from `jump3r`, you discover that humanity was enslaved by an advanced alien race, called the Enders, using virtual simulations that trapped the minds of humans.
However, the Enders didn't just create a single virtual reality to enslave humans, but many different simulations.
In other words, there are many different BitNodes that exist.
These BitNodes are very different from each other.
jump3r tells you that the only hope for humanity is to destroy all of these BitNodes.
Therefore, the end goal for the player is to enter and then destroy each BitNode.
Destroying a BitNode resets most of the player's progress but grants the player a powerful second-tier persistent upgrade called a [Source-File](sourcefiles.md).
Different BitNodes grant different [Source-Files](sourcefiles.md).
Each BitNode has unique characteristics that are related to varying backstories.
For example, in one BitNode the world is in the middle of a financial catastrophe with a collapsing market.
In this BitNode, most forms of income such as working at a [Company](../basic/companies.md) or [Hacknet Nodes](../basic/hacknet_nodes.md) are significantly less profitable.
[Servers](../basic/servers.md) have less money on them and lowered growth rates, but it is easier to lower their security level using the `weaken` function.
Furthermore, some BitNodes introduce new content and mechanics.
For example, there is one BitNode that grants access to the [Singularity API](https://github.com/bitburner-official/bitburner-src/blob/stable/markdown/bitburner.singularity.md).
There is another BitNode in which you can manage a [Gang](gang.md) to earn money and [Reputation](../basic/reputation.md).
## How to destroy a BitNode
Initially, the only way to destroy a BitNode is to join Daedalus.
From Daedalus, the player can obtain an [Augmentation](../basic/augmentations.md) called `The Red Pill`, which doesn't cost any money but does require a good amount of [Faction](../basic/factions.md) [Reputation](../basic/reputation.md).
After installing `The Red Pill`, the player must search for and then manually `hack` a server called `w0r1d_d43m0n`.
This server requires a hacking level of `3000`, sometimes more, in order to successfully hack it.
This will destroy the player's current BitNode.
There is a second method of destroying a BitNode, but it must be unlocked by first destroying BitNode-6 or BitNode-7 ([Bladeburners](bladeburners.md)).
When the player destroys a BitNode, most of their progress will be reset.
This includes things such as [Augmentations](../basic/augmentations.md) and [RAM](../basic/ram.md) upgrades on the home computer.
The only things that will persist through destroying BitNodes are:
- [Source-Files](sourcefiles.md)
- [Scripts](../basic/scripts.md) on the home computer
- [Intelligence](intelligence.md)
## BitNode list
### BitNode 1: Source Genesis
This is the first BitNode created by the Enders to imprison the minds of humans. It became the prototype and testing ground for all of the BitNodes that followed.
This is the first BitNode that you play through. It has no special modifications or mechanics.
Destroying this BitNode will give you Source-File 1, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File lets the player start with 32GB of RAM on their home computer when entering a new BitNode and increases all of the player's multipliers by:
- Level 1: 16%
- Level 2: 24%
- Level 3: 28%
### BitNode 2: Rise of the Underworld
Organized crime groups quickly filled the void of power left behind from the collapse of Western government in the 2050s. As society and civilization broke down, people quickly succumbed to the innate human impulse of evil and savagery. The organized crime factions quickly rose to the top of the modern world.
Certain factions (Slum Snakes, Tetrads, The Syndicate, The Dark Army, Speakers for the Dead, NiteSec, and The Black Hand) give the player the ability to form and manage their own gang, which can earn the player money and reputation with the corresponding faction. The gang faction offers more augmentations than other factions, and in BitNode-2, it offers The Red Pill.
Destroying this BitNode will give you Source-File 2, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases your crime success rate, crime money, and charisma multipliers by:
- Level 1: 24%
- Level 2: 36%
- Level 3: 42%
### BitNode 3: Corporatocracy
Our greatest illusion is that a healthy society can revolve around a single-minded pursuit of wealth.
Sometime in the early 21st century, economic and political globalization turned the world into a corporatocracy, and it never looked back. Now, the privileged elite will happily bankrupt their own countrymen, decimate their own community, and evict their neighbors from houses in their desperate bid to increase their wealth.
In this BitNode, you can create and manage your own corporation. Running a successful corporation has the potential to generate massive profits.
Destroying this BitNode will give you Source-File 3, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic) and level 3 permanently unlocks the full API. This Source-File also increases your charisma and company salary multipliers by:
- Level 1: 8%
- Level 2: 12%
- Level 3: 14%
### BitNode 4: The Singularity
The Singularity has arrived. The human race is gone, replaced by artificially super intelligent beings that are more machine than man.
In this BitNode, you will gain access to a new set of Netscript functions known as Singularity functions. These functions allow you to control most aspects of the game through scripts, including working for factions/companies, purchasing/installing augmentations, and creating programs.
Destroying this BitNode will give you Source-File 4, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File lets you access and use the Singularity functions in other BitNodes. Each level of this Source-File reduces the RAM cost of singularity functions:
- Level 1: 16x
- Level 2: 4x
- Level 3: 1x
### BitNode 5: Artificial Intelligence
They said it couldn't be done. They said the human brain, along with its consciousness and intelligence, couldn't be replicated. They said the complexity of the brain results from unpredictable, nonlinear interactions that couldn't be modeled by 1's and 0's. They were wrong.
Destroying this BitNode will give you Source-File 5, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File grants you a new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However, gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game.
In addition, this Source-File will unlock:
- `getBitNodeMultipliers()` Netscript function
- Permanent access to `Formulas.exe`
- Access to BitNode multiplier information on the `Stats` page
It will also raise all of your hacking-related multipliers by:
- Level 1: 8%
- Level 2: 12%
- Level 3: 14%
### BitNode 6: Bladeburners
In the middle of the 21st century, OmniTek Incorporated began designing and manufacturing advanced synthetic androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth generation of their Synthoid design, called MK-VI, by developing a hyper-intelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.
In this BitNode, you will be able to access the Bladeburner division at the NSA, which provides a new mechanic for progression.
Destroying this BitNode will give you Source-File 6, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File allows you to access the NSA's Bladeburner division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:
- Level 1: 8%
- Level 2: 12%
- Level 3: 14%
### BitNode 7: Bladeburners 2079
In the middle of the 21st century, you were doing cutting-edge work at OmniTek Incorporated as part of the AI design team for advanced synthetic androids, or Synthoids for short. You helped achieve a major technological breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a hyper-intelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.
In this BitNode, you will be able to access the Bladeburner division at the NSA, which provides a new mechanic for progression.
Destroying this BitNode will give you Source-File 7, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File allows you to access the NSA's Bladeburner division in other BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:
- Level 1: 8%
- Level 2: 12%
- Level 3: 14% and immediately receive "The Blade's Simulacrum" augmentation after joining the Bladeburner division
### BitNode 8: Ghost of Wall Street
You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.
In this BitNode:
- You start with $250 million
- You start with a WSE membership and access to the TIX API
- You are able to short stocks and place different types of orders (limit/stop)
Destroying this BitNode will give you Source-File 8, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:
- Level 1: Permanent access to WSE and TIX API
- Level 2: Ability to short stocks in other BitNodes
- Level 3: Ability to use limit/stop orders in other BitNodes
This Source-File also increases your hacking growth multipliers by:
- Level 1: 12%
- Level 2: 18%
- Level 3: 21%
### BitNode 9: Hacktocracy
When Fulcrum Secret Technologies released their open-source Linux distro Chapeau, it quickly became the OS of choice for the underground hacking community. Chapeau became especially notorious for powering the Hacknet, which is a global, decentralized network used for nefarious purposes. Fulcrum Secret Technologies quickly abandoned the project and dissociated themselves from it.
This BitNode unlocks the Hacknet Server, which is an upgraded version of the Hacknet Node. Hacknet Servers generate hashes, which can be spent on a variety of different upgrades.
Destroying this BitNode will give you Source-File 9, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:
- Level 1: Permanently unlocks the Hacknet Server in other BitNodes
- Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode
- Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode
(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing augmentations)
This Source-File also increases hacknet production and reduces hacknet costs by:
- Level 1: 12%
- Level 2: 18%
- Level 3: 21%
### BitNode 10: Digital Carbon
In 2084, VitaLife unveiled to the world the Persona Core, a technology that allowed people to digitize their consciousness. Their consciousness could then be transferred into Synthoids or other bodies by transmitting the digitized data. Human bodies became nothing more than 'sleeves' for the human consciousness. Mankind had finally
achieved immortality - at least for those that could afford it.
This BitNode unlocks Sleeve and Grafting technology:
- Sleeve: Duplicate your consciousness into Synthoids, allowing you to perform different tasks asynchronously. You cannot buy Sleeves outside this BitNode.
- Grafting: Visit VitaLife in New Tokyo to get access to this technology. It allows you to graft augmentations, which is an alternative way of installing augmentations.
Destroying this BitNode will give you Source-File 10, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File unlocks Sleeve and Grafting API in other BitNodes. Each level of this Source-File also grants you a Sleeve.
### BitNode 11: The Big Crash
The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around the world. It was this period of disorder that eventually led to the governmental reformation of many global superpowers, most notably the USA and China. But just as the world was slowly beginning to recover from these dark times, financial catastrophes hit.
In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of this chaos and confusion, hackers were able to steal billions of dollars from the world's largest electronic banks, prompting an international banking crisis as governments were unable to bail out insolvent banks. Now, the world is slowly crumbling in the middle of the biggest economic crisis of all time.
Destroying this BitNode will give you Source-File 11, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:
- Level 1: 32%
- Level 2: 48%
- Level 3: 56%
It also reduces the price increase for every augmentation bought by:
- Level 1: 4%
- Level 2: 6%
- Level 3: 7%
### BitNode 12: The Recursion
To iterate is human; to recurse, divine.
Every time this BitNode is destroyed, it becomes slightly harder. Destroying this BitNode will give you Source-File 12, or if you already have this Source-File, it will upgrade its level. There is no maximum level for Source-File 12. Each level of Source-File 12 lets you start any BitNodes with NeuroFlux Governor equal to the level of this source file.
### BitNode 13: They're lunatics
With the invention of augmentations in the 2040s, a religious group known as the Church of the Machine God has rallied far more support than anyone would have hoped.
Their leader, Allison "Mother" Stanek is said to have created her own augmentation whose power goes beyond any other. Find her in Chongqing and gain her trust.
Destroying this BitNode will give you Source-File 13, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File lets the Church of the Machine God appear in other BitNodes.
Each level of this Source-File increases the size of Stanek's Gift.
Due to the effect of Source-File 7.3, you must accept Stanek's Gift before joining the Bladeburner division if you have that Source-File.
### BitNode 14: IPvGO Subnet Takeover
In late 2070, the .org bubble burst, and most of the newly-implemented IPvGO 'net collapsed overnight. Since then, various factions have been fighting over small subnets to control their computational power. These subnets are very valuable in the right hands, if you can wrest them from their current owners. You will be opposed by the other factions, but you can overcome them with careful choices. Prevent their attempts to destroy your networks by controlling the open space in the 'net!
Destroying this BitNode will give you Source-File 14, or if you already have this Source-File, it will upgrade its level up to a maximum of 3. This Source-File grants the following benefits:
- Level 1: 100% increased stat multipliers from Node Power
- Level 2: Permanently unlocks the go.cheat API
- Level 3: 25% additive increased success rate for the go.cheat API
This Source-File also increases the maximum favor from winstreaks you can gain for each faction to:
- Level 1: 200k rep equivalent
- Level 2: 300k rep equivalent
- Level 3: 400k rep equivalent
and increases the reputation converted to favor for winning two games in a row to:
- Level 1: 1000 rep to favor
- Level 2: 1500 rep to favor
- Level 3: 2000 rep to favor
@@ -0,0 +1,11 @@
# Bladeburners
Bladeburner divisions were created internationally in the mid-21st century. Tasked with monitoring and "managing" rogue Synthoids, which may have blended into society and are sometimes considered a threat, working for Bladeburners gives access to powerful enhancements and a goal of destroying [BitNodes](bitnodes.md) by operating against increasingly strong Synthoid opposition.
## Bladeburner Skills:
Designed to improve a human agent's capabilities beyond their natural limits, Bladeburner skills add a persistent bonus while in the [BitNode](bitnodes.md) where they were purchased. Bladeburner skills are purchased with Bladeburner skill points, not money.
## Faction and Rank:
Bladeburners also offer unique [Augmentations](../basic/augmentations.md) and a [Faction](factions.md) invite to agents who "put in the work" to gain a small amount of rank. While Bladeburner rank and skill points persist after any augmentation installs, faction reputation will be reset. Bladeburner faction reputation can only be gained through Bladeburner actions.
@@ -0,0 +1,44 @@
# Basic gameplay Terms
## Basic gameplay
There is a `corporation-management-handbook.lit` on your home server. Read it.
Go to City Hall in Sector-12 and create a Corporation through the UI if you want. However, you really should do everything by scripting.
You can use seed money when creating a corporation in BN3.
There are multiple industries that you can expand into. In order to do that, you need to choose an industry and create a division. Agriculture is the best starting industry. Check this [section](./industry-supply-chain.md) for details.
Each division can expand to 6 cities.
Each industry has different input materials and output materials/products. For example: Agriculture needs Water and Chemicals to produce Plants and Food. The number next to each material is its "coefficient" (You can call it "weight" or "factor" if you want).
$$0.5\ \textit{Water}+0.2\ \textit{Chemicals} \Rightarrow 1\ \textit{Plants}+1\ \textit{Food}$$
There is no "offline progress" in corporation. When you go offline, the corporation accumulates bonus time.
A corporation continuously transitions between 5 states: START → PURCHASE → PRODUCTION → EXPORT → SALE → START. The action occurs when the state is _entered_, i.e., when the state is PURCHASE, it means purchasing has just occurred. One cycle (going through one of these transitions) takes 10 seconds. If you have enough bonus time, it takes one second. Check this [section](./miscellany.md) for details.
Each division has its "division product multiplier". This multiplier can be increased by buying [boost materials](./boost-material.md): AI Cores, Hardware, Real Estate, and Robots.
You should look around to get familiar with the UI. One confusing thing for newbies is how to setup the "buy value" to buy materials. We have "Purchase" and "Bulk purchase":
- Purchase: This is "buy per second" value. For example: In cycle 1, you enter "100", then in cycle 2, at PURCHASE state, you'll have 100\*10 units in your inventory. You can buy more than what your funds allows (and go into debt) with this option. Important note: when you have enough units that you want, you must press "Clear purchase", otherwise it'll buy forever until you run out of storage space.
- Bulk purchase: You buy exactly what you want. Must pay upfront.
If you want to buy something, write a script to do that. It's too error-prone to do it manually.
When you hover your mouse over "Storage space", you'll see the space that materials/products take up and the number of units in the warehouse.
## Terms
Smart Supply: Automatically buy optimal quantities of input material units.
Export: Allow export/import materials between divisions.
Wilson: Wilson Analytics upgrade.
Market-TA2: Automatically set optimal prices for your output materials/products.
RP: Research point.
@@ -0,0 +1,170 @@
# Boost material
## Division production multiplier
Each industry has a different set of boost material's coefficients. For example:
- Agriculture:
- AI Cores: 0.3
- Hardware: 0.2
- Real Estate: 0.72
- Robots: 0.3
- Chemical:
- AI Cores: 0.2
- Hardware: 0.2
- Real Estate: 0.25
- Robots: 0.25
- Tobacco:
- AI Cores: 0.15
- Hardware: 0.15
- Real Estate: 0.15
- Robots: 0.25
The division production multiplier is used for calculating [division raw production](./division-raw-production.md) in the PRODUCTION state. It's sum of each warehouse's `cityMult`, and `cityMult` is calculated by combining the quantity of each boost material with the boost material's coefficient.
This multiplier is `this.productionMult` in `Division.ts`.
```typescript
calculateProductionFactors(): void {
let multSum = 0;
for (const warehouse of getRecordValues(this.warehouses)) {
const materials = warehouse.materials;
const cityMult =
Math.pow(0.002 * materials["Real Estate"].stored + 1, this.realEstateFactor) *
Math.pow(0.002 * materials.Hardware.stored + 1, this.hardwareFactor) *
Math.pow(0.002 * materials.Robots.stored + 1, this.robotFactor) *
Math.pow(0.002 * materials["AI Cores"].stored + 1, this.aiCoreFactor);
multSum += Math.pow(cityMult, 0.73);
}
multSum < 1 ? (this.productionMult = 1) : (this.productionMult = multSum);
}
```
This is the reason we must expand to all 6 cities. More cities → Higher `this.productionMult` → Higher raw production → More produced materials/products → Higher profit per city → Higher total profit.
Expanding to 6 cities means `this.productionMult` is multiplied by 6, and we have 6 cities, so effectively production is multiplied by 36. This is not exactly true because there are more things that affect the raw production value of each city, but x36 can be seen as a rough estimate of benefit, especially in early rounds. In those rounds, division production multiplier is the most important thing.
## Optimizer
In order to increase `this.productionMult`, we need to buy boost materials. The problem is how much we should buy each material, given a specific constraint on storage space.
Each boost material has a coefficient ("factor" in source code) and a base size (size for 1 unit in storage).
Let's define:
- 4 coefficients: ${c_{1}}$, ${c_{2}}$, ${c_{3}}$, ${c_{4}}$
- 4 base sizes: ${s_{1}}$, ${s_{2}}$, ${s_{3}}$, ${s_{4}}$
- Quantities of each boost materials: x, y, z, w
Assuming the same warehouse setup in all cities, the division production multiplier is:
$$F(x,y,z,w) = \sum_{i = 1}^{6}\left( (1 + 0.002\ast x)^{c_{1}}\ast(1 + 0.002\ast y)^{c_{2}}{\ast(1 + 0.002\ast z)}^{c_{3}}{\ast(1 + 0.002\ast w)}^{c_{4}} \right)^{0.73}$$
In order to find the maximum of the function above, we can find the maximum of this function:
$$F(x,y,z,w) = (1 + 0.002\ast x)^{c_{1}}\ast(1 + 0.002\ast y)^{c_{2}}{\ast(1 + 0.002\ast z)}^{c_{3}}{\ast(1 + 0.002\ast w)}^{c_{4}}$$
Constraint function (S is storage space):
$$G(x,y,z,w) = s_{1}\ast x + s_{2}\ast y + s_{3}\ast z + s_{4}\ast w = S$$
Problem: Find the maximum of $F(x,y,z,w)$ with constraint $G(x,y,z,w)$.
## Solution
### Lagrange multiplier method
Disclaimer: This is based on discussion between \@Jesus and \@yichizhng on Discord. All credit goes to them.
By using the [Lagrange multiplier](https://en.wikipedia.org/wiki/Lagrange_multiplier) method, we have this system:
$$\begin{cases} \frac{\partial F}{\partial x} &= \lambda\frac{\partial G}{\partial x} \newline \frac{\partial F}{\partial y} &= \lambda\frac{\partial G}{\partial y} \newline \frac{\partial F}{\partial z} &= \lambda\frac{\partial G}{\partial z} \newline \frac{\partial F}{\partial w} &= \lambda\frac{\partial G}{\partial w} \newline G(x,y,z,w) &= S\end{cases}$$
In order to solve this system, we have 2 choices:
- Solve that system with [Ceres Solver](./miscellany.md).
- Do the hard work with basic calculus and algebra. This is the optimal way in both accuracy and performance, so we'll focus on it. In the following sections, I'll show the proof for this solution.
$$x\ast s_{1} = \frac{S - 500\ast\left( \frac{s_{1}}{c_{1}}\ast\left( c_{2} + c_{3} + c_{4} \right) - \left( s_{2} + s_{3} + s_{4} \right) \right)}{\frac{c_{1} + c_{2} + c_{3} + c_{4}}{c_{1}}}$$
$$y\ast s_{2} = \frac{S - 500\ast\left( \frac{s_{2}}{c_{2}}\ast\left( c_{1} + c_{3} + c_{4} \right) - \left( s_{1} + s_{3} + s_{4} \right) \right)}{\frac{c_{1} + c_{2} + c_{3} + c_{4}}{c_{2}}}$$
$$z\ast s_{3} = \frac{S - 500\ast\left( \frac{s_{3}}{c_{3}}\ast\left( c_{1} + c_{2} + c_{4} \right) - \left( s_{1} + s_{2} + s_{4} \right) \right)}{\frac{c_{1} + c_{2} + c_{3} + c_{4}}{c_{3}}}$$
$$w\ast s_{4} = \frac{S - 500\ast\left( \frac{s_{4}}{c_{4}}\ast\left( c_{1} + c_{2} + c_{3} \right) - \left( s_{1} + s_{2} + s_{3} \right) \right)}{\frac{c_{1} + c_{2} + c_{3} + c_{4}}{c_{4}}}$$
## Proof
Define: $k = 0.002$
$$\begin{cases}\frac{\partial F}{\partial x} = \left( k\ast c_{1}\ast(1 + k\ast x)^{c_{1} - 1} \right)\ast(1 + k\ast y)^{c_{2}}\ast(1 + k\ast z)^{c_{3}}\ast(1 + k\ast w)^{c_{4}} = \lambda\ast s_{1} \newline \frac{\partial F}{\partial y} = (1 + k\ast x)^{c_{1}}\ast\left( k\ast c_{2}\ast(1 + k\ast y)^{c_{2} - 1} \right)\ast(1 + k\ast z)^{c_{3}}\ast(1 + k\ast w)^{c_{4}} = \lambda\ast s_{2} \end{cases}$$
$$k\ast c_{1}\ast(1 + k\ast x)^{- 1}\ast s_{2} = k\ast c_{2}\ast(1 + k\ast y)^{- 1}\ast s_{1}$$
$$c_{1}\ast s_{2}\ast(1 + k\ast y) = c_{2}\ast s_{1}\ast(1 + k\ast x)$$
$$1 + k\ast y = \frac{c_{2}\ast s_{1}}{c_{1}\ast s_{2}}\ast(1 + k\ast x)$$
$$y = \frac{c_{2}\ast s_{1} + k\ast x\ast c_{2}\ast s_{1} - c_{1}\ast s_{2}}{k\ast c_{1}\ast s_{2}}$$
$$y\ast s_{2} = \frac{c_{2}\ast s_{1}\ast s_{2} + k\ast x\ast c_{2}\ast s_{1}\ast s_{2} - c_{1}\ast s_{2}\ast s_{2}}{k\ast c_{1}\ast s_{2}}$$
$$y\ast s_{2} = \frac{c_{2}\ast s_{1}}{k\ast c_{1}} + \frac{x\ast c_{2}\ast s_{1}}{c_{1}} - \frac{s_{2}}{k}$$
$$y\ast s_{2} = \frac{c_{2}}{c_{1}}\ast x\ast s_{1} + \frac{1}{k}\ast\frac{c_{2}\ast s_{1} - c_{1}\ast s_{2}}{c_{1}}$$
$$y\ast s_{2} = \frac{c_{2}}{c_{1}}\ast x\ast s_{1} + 500\ast\frac{c_{2}\ast s_{1} - c_{1}\ast s_{2}}{c_{1}}$$
Repeating the above steps, we have:
$$z\ast s_{3} = \frac{c_{3}}{c_{1}}\ast x\ast s_{1} + 500\ast\frac{c_{3}\ast s_{1} - c_{1}\ast s_{3}}{c_{1}}$$
$$w\ast s_{4} = \frac{c_{4}}{c_{1}}\ast x\ast s_{1} + 500\ast\frac{c_{4}\ast s_{1} - c_{1}\ast s_{4}}{c_{1}}$$
Substituting into the constraint function:
$$x\ast s_{1} + y\ast s_{2} + z\ast s_{3} + w\ast s_{4} = S$$
$$x\ast s_{1} + \frac{c_{2}}{c_{1}}\ast x\ast s_{1} + 500\ast\frac{c_{2}\ast s_{1} - c_{1}\ast s_{2}}{c_{1}} + \frac{c_{3}}{c_{1}}\ast x\ast s_{1} + 500\ast\frac{c_{3}\ast s_{1} - c_{1}\ast s_{3}}{c_{1}} + \frac{c_{4}}{c_{1}}\ast x\ast s_{1} + 500\ast\frac{c_{4}\ast s_{1} - c_{1}\ast s_{4}}{c_{1}} = S$$
$$\frac{x\ast s_{1}\ast\left( c_{1} + c_{2} + c_{3} + c_{4} \right)}{c_{1}} + \frac{500}{c_{1}}\ast\left( c_{2}\ast s_{1} - c_{1}\ast s_{2} + c_{3}\ast s_{1} - c_{1}\ast s_{3} + c_{4}\ast s_{1} - c_{1}\ast s_{4} \right) = S$$
$$\frac{x\ast s_{1}\ast\left( c_{1} + c_{2} + c_{3} + c_{4} \right)}{c_{1}} + \frac{500}{c_{1}}\ast\left( s_{1}\ast\left( c_{2} + c_{3} + c_{4}\ \right) - c_{1}\ast\left( s_{2} + s_{3} + s_{4} \right) \right) = S$$
$$x\ast s_{1}\ast\frac{c_{1} + c_{2} + c_{3} + c_{4}}{c_{1}} + \frac{500}{c_{1}}\ast\left( s_{1}\ast\left( c_{2} + c_{3} + c_{4}\ \right) - c_{1}\ast\left( s_{2} + s_{3} + s_{4} \right) \right) = S$$
$$x\ast s_{1} = \frac{S - 500\ast\left( \frac{s_{1}}{c_{1}}\ast\left( c_{2} + c_{3} + c_{4} \right) - \left( s_{2} + s_{3} + s_{4} \right) \right)}{\frac{c_{1} + c_{2} + c_{3} + c_{4}}{c_{1}}}$$
We can do the same steps for y,z,w.
## Handle low storage space
With small S, any variable (x,y,z,w) can be negative. In that case, we remove the variable that ends up being negative and then redo the steps above. When implementing this solution, we can use a recursive function to handle those cases.
@@ -0,0 +1,47 @@
# Demand - Competition
## Usage
They are used for calculating `MaxSalesVolume` of materials and products.
`Market Research - Demand` grants access to `Demand` data.
`Market Data - Competition` grants access to `Competition` data.
## Material
Each material has its own `demandBase`, `demandRange`, `competitionBase`, `competitionRange`, and `maxVolatility`. Both `demand` and `competition` start at their bases and are always in their respective ranges.
This is non-intuitive: `demand` and `competition` are _not_ used for calculating `marketPrice`.
During the START state, the game calculates 6 variables:
```typescript
const priceVolatility: number = (Math.random() * this.maxVolatility) / 300;
const priceChange: number = 1 + priceVolatility;
const compVolatility: number = (Math.random() * this.maxVolatility) / 100;
const compChange: number = 1 + compVolatility;
const dmdVolatility: number = (Math.random() * this.maxVolatility) / 100;
const dmdChange: number = 1 + dmdVolatility;
```
`priceChange`, `compChange` and `dmdChange` are the amount of `marketPrice`, `competition` and `demand` changed in the next steps.
After that, it randomizes twice:
- First: `Math.random()` < 0.5. If yes, increase `competition` and `marketPrice`. If not, decrease them.
- Second: `Math.random()` < 0.5. If yes, increase `demand` and `marketPrice`. If not, decrease them.
## Product
Initial values are set when the product is finished. Check the next [section](./product.md) for the formulas.
During the START state, the game decreases `demand` and increases `competition` of the product.
- Amount of change:
$$AmountOfChange = Random(0,3)*0.0004$$
- This amount is multiplied by 3 if the industry is Pharmaceutical, Software or Robotics.
`Demand`'s minimum value is 0.001. `Competition`'s maximum value is 99.99.
@@ -0,0 +1,40 @@
# Division raw production
## Definition
Each industry requires different input materials. Each required material has its own coefficient. This value is not the same as the boost material's coefficient; they are different things. For example:
- Agriculture: { Water: 0.5, Chemicals: 0.2 }
- Chemical: { Plants: 1, Water: 0.5 }
- Tobacco: { Plants: 1 }
Each division has a number that I call "Division raw production". This raw value is the division's production capability. Let's call it `RawProduction`. It's used for:
- Calculating how much input material that we need. It's multiplied by the input material's coefficient to find the required quantity of that input material.
- Calculating how much material/product that division can produce. It's multiplied by `ProducibleFrac`. `ProducibleFrac` starts at 1 and is reduced if there are not enough input materials.
For example, with Agriculture, if `RawProduction` is 1000, we need 500 units of Water and 200 units of Chemicals. With these input materials, we can produce 1000 units of Plants and 1000 units of Food.
### Formula
`RawProduction` is the product of 4 multipliers:
- Office multiplier:
- Employee production in 3 jobs (Operations, Engineer, Management) and their sum:
- `OperationsProd = office.employeeProductionByJob.Operations`
- `EngineerProd = office.employeeProductionByJob.Engineer`
- `ManagementProd = office.employeeProductionByJob.Management`
- $TotalEmployeesProd = OperationsProd + EngineerProd + ManagementProd$
- Management factor:
$$ManagementFactor = 1 + \frac{ManagementProd}{1.2\ast TotalEmployeesProd}$$
- Employee production multiplier:
$$EmployeeProductionMultiplier = \left( (OperationsProd)^{0.4} + (EngineerProd)^{0.3} \right)\ast ManagementFactor$$
- Balancing multiplier:
$$BalancingMultiplier = 0.05$$
- If output is material:
$$OfficeMultiplier = BalancingMultiplier\ast EmployeeProductionMultiplier$$
- If output is product:
$$OfficeMultiplier = 0.5\ast BalancingMultiplier\ast EmployeeProductionMultiplier$$
- Division production multiplier: see previous [section](./boost-material.md).
- Upgrade multiplier: multiplier from [Smart Factories](./unlocks-upgrade-research.md).
- Research multiplier: multiplier from [research](./unlocks-upgrade-research.md).
@@ -0,0 +1,226 @@
# FAQ
#### What is a corporation good for?
Generating ridiculously massive income. With this income, you can buy whatever you want, e.g., augmentations or bribing factions for reputation.
#### How many investment rounds should I take?
There are 4 rounds, and you should take all of them. Investment funds greatly boost your corporation development. Your corporation won't be able to reach its full potential in a reasonable time without them.
#### Investors take too many shares. Can I buy them back later?
No.
#### The government takes too many shares when I use the "Seed money" option. Can I buy them back later?
No.
#### Why can I not buy back my shares?
You can buy back shares that were issued. Shares that were given to the government (when you use seed money) and investors (when you take investment offers) cannot be bought back.
You always have total control over your corporation, so you don't have to worry about "ownership". When your profit hits exponential growth, the share percentage means nothing. If your corporation's profit is 1e90/s and you only have 1% shares, you still get 1e88/s.
#### My corporation generates profit. Why does my money not increase?
Go public and set a dividend.
#### How many shares should I issue?
0
#### Why is my "earnings as a shareholder" lower than my calculation ("Dividends per share" \* "Owned Stock Shares")?
Your dividend is negatively affected by a penalty modifier called "tribute modifier". `ShadyAccounting` and `GovernmentPartnership` reduce this penalty modifier. Check this [section](./financial-statement.md) for details.
#### All corporation APIs require too much RAM. How do I deal with it?
Earn money by any normal means: hacking, committing crimes, cheating in the casino, etc. There is also another way:
- Follow the [advice](./general-advice.md) on round 1, but at the end, do not accept the investment offer.
- Go public immediately.
- Sell all your shares immediately.
- Sell the CEO position and start a new corporation.
Also note that you don't have to do everything in one script. You can make smaller scripts that do less and use fewer APIs to keep the RAM usage down, and use `run()` to chain them together.
#### Why can I not create a corporation with the government's seed money ("Use seed money")?
That option is only available in BN3.
#### Can I sell my corporation via API?
No.
#### Can I transfer my (personal) money to the corporation's funds?
No. However, with SF9, you can sell hashes for corporation funds or RP.
#### Why can I not bribe factions for reputations? What's the exchange rate?
Your corporation's valuation must be at least 100e12 to bribe. Exchange rate: 1e9/reputation.
#### What's the maximum number of divisions?
In BN3, it's 20.
#### Why does my division not produce anything?
Check these things:
- Have at least 1 employee in Operations or Engineer
- Have enough storage space. Warehouse congestion is a common problem.
#### Which industry should I focus on?
Check this [section](./industry-supply-chain.md).
#### Should I create more divisions for the same industry? For example: multiple Agriculture divisions.
No, focus your funds on one division for each industry.
#### Which "feature" (Export, Smart Supply, etc.) should I unlock?
Check this [section](./unlocks-upgrade-research.md).
#### Which upgrade should I buy?
Check this [section](./unlocks-upgrade-research.md).
#### Which research should I buy?
Check this [section](./unlocks-upgrade-research.md).
#### I unlocked "Smart Supply", but it does not work or its behavior is weird.
Check these things:
- You have to enable it if you unlock it after purchasing a warehouse.
- Always choose "Use leftovers". "Use imported" is only useful in special cases.
#### How do I implement a custom Smart Supply script?
Check this [section](./smart-supply.md).
#### How do I setup the quantity of exported materials?
Specify an export string. The optimal export string is `(IPROD+IINV/10)*(-1)`. Check this [section](./miscellany.md) for details.
#### Is research's benefit shared between different divisions?
It's shared if those divisions are in the same industry. However, the RP pool is not shared.
#### Should I expand to all 6 cities?
Yes. In fact, you must do that for maximum efficiency. Check this [section](./boost-material.md).
#### What are boost materials?
They are the materials that boost [division production multiplier](./boost-material.md). There are 4 boost materials: AI Cores, Hardware, Real Estate, and Robots.
#### How many boost materials should I buy?
Check the optimizer in this [section](./boost-material.md).
#### Why does the [General advice](./general-advice.md) section tell me to use API to upgrade office size?
API (`upgradeOfficeSize`) gives you granular control over office size. You cannot do that through UI.
#### Why does `setJobAssignment` not take effect immediately?
It only takes effect in the next cycle's START state.
#### Why do energy and morale matter?
They are used for calculating `employeeProductionByJob`, then that property is used for calculating other things: RP, material's quality, product's stats, division raw production, and material/product's `MaxSalesVolume`.
#### What do Interns do?
They maintain energy and morale. You should only use them if you don't want to write scripts. A tea/party script can maintain energy and morale for you, and it is very simple to implement. It's recommended to implement that script instead of wasting employees on the "Intern" job.
#### I use 1/9 as Intern ratio, but energy and morale still drop.
You can only use that ratio when your corporation works fine (funds > 0 or profit > 0). If it does not, use 1/6.
#### Are there any other ways to maintain these 2 stats?
There are research upgrades for that. However, you should never buy them. It's always better spending your RP elsewhere or just stock up on RP.
#### Buying tea and throwing parties cost me too much money. Why are they so expensive?
Tea and parties are cheap. If your budget is so low that they cost you too much money, it means you wasted too much of your funds.
#### How much money should I spend to throw parties? How often should I buy tea / throw party?
Check this [section](./office.md).
#### How do I know if the qualities of my input materials are too low and need to be improved?
Check this [section](./quality.md).
#### What are Awareness and Popularity?
Check this [section](./wilson-analytics-advert.md).
#### Is Wilson retroactive?
No.
#### Does that mean I should buy Wilson as soon as possible? If yes, then why don't you buy any Wilson in round 1 and 2?
You should buy Wilson as soon as possible, but not too soon. Round 1 and 2 are those cases. Check this [section](./wilson-analytics-advert.md) for details.
#### What are Demand and Competition?
Check this [section](./demand-competition.md).
#### How much should I spend for "Design investment" and "Marketing investment" when I create a new product? How do they affect the product?
They are not too important. It's fine to spend 1% of your current funds for them. Check this [section](./product.md) for details.
#### Should I buy Market-TA1?
No, wait for Market-TA2. Market-TA1 is useless in most cases.
#### When should I buy Market-TA2?
As soon as possible, it greatly increases your profit because it can find the optimal price. However, you should not use all your RP to buy it. Depleting the entire RP pool severely degrades your product rating. That research costs a total of 75e3 RP (Hi-Tech R&D Laboratory + Market-TA1 + Market-TA2), so I recommend saving up 150e3 RP before buying it. Depleting half of the RP pool is acceptable, considering the positive effect of Market-TA2.
#### What is the difference between Market-TA1 and Market-TA2?
If you set the price of the material/product too much higher than the market price, you will get a penalty modifier that makes the material/product not be able to be sold as much as it should be.
Market-TA1 sets a price higher than the market price while ensuring that you don't get the penalty modifier.
Market-TA2 assumes that you can sell all stored units without any problems and can accept a penalty modifier. If that's the case, it finds the highest possible price.
With products, the price set by Market-TA2 is usually several orders of magnitude higher than Market-TA1.
#### I bought Market-TA2, but it does not set the optimal price for me.
You have to enable it.
#### Is there a workaround for Market-TA2? Waiting for RP takes too long.
Yes, you can reimplement Market-TA2. Implementing a custom Market-TA2 script is the best optimization in round 3+. Check this [section](./optimal-selling-price-market-ta2.md) to see how to do it.
### Why can I not sell all produced goods in the storage even after using Market-TA1 and Market-TA2?
In the SALE state, the game calculates `MaxSalesVolume` of the material/product. This is the number of items that can be sold in this state. This value is the product of many multipliers, and one of those multipliers is the markup multiplier. When it's higher than 1, it's a bonus multiplier helping you sell more items. When it's lower than 1, it's a penalty modifier making you sell fewer items.
With Market TA1 and Market TA2, the markup multiplier is always less than or equal to 1. In other words, they never help you sell more items than you can. Their job is to help you find a good price that is higher than the market price. If you want to sell more items than you can, you need to set the price below the market price. This is not the job of Market TA1 and Market TA2.
Check this [section](./optimal-selling-price-market-ta2.md) for more information and tips on how to increase `MaxSalesVolume`.
#### How do I discard materials/products?
Set the selling price to 0.
#### What is a dummy division?
Check this [section](./miscellany.md).
#### Can I skip the Chemical division in round 2 and invest all funds in the Agriculture division?
No. Without a Chemical division, the quality of your Agriculture division's output materials will be too low, and you cannot sell all those low-quality materials at a good price.
@@ -0,0 +1,181 @@
# Financial statement
## Total assets
`TotalAssets` is the sum of:
- Funds.
- With each division:
- Division's `RecoupableValue`. It's half of the sum of:
- Industry's starting cost.
- With each city that division has expanded to (exclude Sector-12):
- Office's initial cost.
- Warehouse's initial cost.
- Output material: `material.stored * material.averagePrice`.
- Product: `product.stored * product.productionCost`.
This value is kept track by `TotalAssets` and `PreviousTotalAssets`.
Funds is increased/decreased by `gainFunds`/`loseFunds` for each "action" (buying tea, throwing party, buying upgrade, etc.). Each action is either "long-term" (`FundsSourceLongTerm`) or "short-term" (`FundsSourceShortTerm`). If an action is "long-term", it modifies `totalAssets`.
```typescript
if (LongTermFundsSources.has(source)) {
this.totalAssets += amt;
}
this.funds += amt;
```
`FundsSourceLongTerm` and `FundsSourceShortTerm` are in `FundsSource.ts`.
## Valuation
Cycle's valuation:
- AssetDelta:
$$AssetDelta = \frac{TotalAssets - PreviousTotalAssets}{10}$$
- Pre-IPO:
- If `AssetDelta` is greater than 0, it's used for calculating valuation.
- Formula:
$$Valuation = \left( 10^{10} + \frac{Funds}{3} + AssetDelta\ast 315000 \right)\ast\left( \sqrt[12]{1.1} \right)^{NumberOfOfficesAndWarehouses}$$
- Valuation is rounded down to nearest million.
- Post-IPO:
- `AssetDelta` is affected by `DividendRate`:
$$AssetDelta = AssetDelta\ast(1 - DividendRate)$$
- Formula:
$$Valuation = (Funds + AssetDelta\ast 85000)\ast\left(\sqrt[12]{1.1}\right)^{NumberOfOfficesAndWarehouses}$$
- Minimum value of valuation is $10^{10}$.
- Valuation is multiplied by `CorporationValuation`. Many BitNodes cripple Corporation via this multiplier.
Corporation's valuation is the mean of last 10 cycles' valuations.
Bribing faction for reputation is unlocked when corporation's valuation is greater than or equal to 100e12. Exchange rate: 1e9/reputation.
## Investment offer
There are 4 investment rounds.
Each round has its own `FundingRoundShares` and `FundingRoundMultiplier`.
- $FundingRoundShares = [0.1, 0.35, 0.25, 0.2]$
- $FundingRoundMultiplier = [3, 2, 2, 1.5]$
Formula:
$$Offer = CorporationValuation\ast FundingRoundShares\ast FundingRoundMultiplier$$
Analyses:
- Offer depends on `Funds`, `AssetDelta` and `NumberOfOfficesAndWarehouses`.
- `Funds` are usually depleted to improve divisions.
- `NumberOfOfficesAndWarehouses` is the exponent of the multiplier, it can be increased by creating [dummy division](./miscellany.md). It is an easy way to get higher offer in round 3+, when we have enough funds to do that.
- `AssetDelta` is multiplied by 315000, so it is the main source of offer.
- Assuming that we can sell all produced units and not buy more boost materials, `AssetDelta` is the delta of funds, and the delta of funds is profit. This is why we try our best to improve profit.
## Dividend and Tribute modifier
Your dividend is negatively affected by a penalty modifier called `TributeModifier`. `TributeModifier` depends on `CorporationSoftcap`. In BN3, `CorporationSoftcap` is 1.
$$TributeModifier = 1.15 - CorporationSoftcap$$
`ShadyAccounting` reduces `TributeModifier` by 0.05.
`GovernmentPartnership` reduces `TributeModifier` by 0.1.
Formula:
$$TotalDividends = DividendRate\ast(Revenue - Expenses)\ast 10$$
$$Dividend = \left(OwnedShares\ast\frac{TotalDividends}{TotalShares}\right)^{1 - TributeModifier}$$
Retained earning:
$$RetainedEarning = (1 - DividendRate)\ast(Revenue - Expenses)\ast 10$$
Dividend is added to player's money. Retained earning is added to corporation's funds. This means if we increase `DividendRate`, corporation's valuation is dwindled.
## Shares
Self-fund:
- Cost 150b.
- Total shares: 1b.
- Initial owned shares: 1b.
Use seed money:
- Does not cost money.
- Total shares: 1.5b.
- Initial owned shares: 1b.
In each investment round, investors take a percentage of initial owned shares. The percentage of each round is in `FundingRoundShares`.
If your corporation is self-funded and you sell CEO position, you only need 50b to create next corporation.
`TargetSharePrice`:
$$OwnershipPercentage = \frac{OwnedShares}{TotalShares}$$
$$TargetSharePrice = \frac{CorporationValuation*\left(0.5+\sqrt{OwnershipPercentage}\right)}{TotalShares}$$
When corporation goes public, the initial share price is `TargetSharePrice`.
Share price is updated in START state.
$$SharePrice = \begin{cases} SharePrice\ast(1 + Math.random()\ast 0.01), & SharePrice \leq TargetSharePrice \newline SharePrice\ast(1 - Math.random()\ast 0.01), & SharePrice > TargetSharePrice\end{cases}$$
Minimum share price is 0.01.
Issue new shares:
- Maximum number of new shares is 20% of total shares.
- The number of new shares issued must be a multiple of 10 million.
- New share price:
$$NewOwnershipPercentage = \frac{OwnedShares}{TotalShares+NewShares}$$
$$NewSharePrice = \frac{CorporationValuation\ast\left(0.5+\sqrt{NewOwnershipPercentage}\right)}{TotalShares}$$
- Profit:
$$Profit = {NewShares\ast(SharePrice + NewSharePrice)}\ast{0.5}$$
- Profit is added to corporation's funds.
- `DefaultCooldown` is 4 hours.
- Cooldown: $$Cooldown = DefaultCooldown\ast\frac{TotalShares}{10^{9}}$$
- Part of the new shares are added to `InvestorShares`. The remaining ones are added to `IssuedShares`.
- `MaxPrivateShares`:
$$MaxPrivateShares = {NewShares}\ast{0.5}\ast\frac{InvestorShares}{TotalShares}$$
- `PrivateShares` is randomized between 0 and `MaxPrivateShares`, rounded to nearest 10 million.
- `InvestorShares`:
$$InvestorShares = InvestorShares + PrivateShares$$
- `IssuedShares`:
$$IssuedShares = IssuedShares + NewShares - PrivateShares$$
Sell shares:
- We cannot sell all our shares.
- We cannot sell more than $10^{14}$ shares at a time.
- Cooldown is 1 hour.
- Sold shares are added to `IssuedShares`.
Buy back shares:
- We can only buy back shares that were issued. The shares that were owned by government (when we use seed money) and investors cannot be bought back.
- Shares must be bought back at a 10% premium over the market price.
- We cannot use corporation's funds to buy back shares. They must be bought with our money.
- We cannot buy back more than $10^{14}$ shares at a time.
Sold/bought back shares are processed in multiple "iterations".
- Number of shares processed each iteration is shareSalesUntilPriceUpdate. Default value is $10^6$.
- Share price is recalculated each iteration.
$$OwnershipPercentage = \frac{OwnedShares - ProcessedShares}{TotalShares}$$
$$TargetSharePrice = \frac{CorporationValuation\ast\left(0.5 + \sqrt{OwnershipPercentage}\right)}{TotalShares}$$
$$SharePrice = \begin{cases} SharePrice\ast 1.005, SharePrice \leq TargetSharePrice \newline SharePrice\ast 0.995, SharePrice > TargetSharePrice\end{cases}$$
@@ -0,0 +1,109 @@
# General advice
## Round 1
Create Agriculture division, expand to 6 cities and buy 6 warehouses.
Use API (`upgradeOfficeSize`) to upgrade office size from 3 to 4. Set 4 employees to R&D and wait until RP is at least 55. Switch to Operations (1) + Engineer (1) + Business (1) + Management (1) before buying boost materials.
Make sure that your employees' energy and morale are at maximum value. This is always mandatory, not just in round 1.
Buy the "Smart Supply" feature or write a custom "Smart Supply" script. The built-in "Smart Supply" costs 25b, and 25b is huge in round 1. If you have a custom "Smart Supply" script, you will have more funds to invest in other important upgrades. However, the custom "Smart Supply" script may be a bit hard to implement correctly, especially if you are a new player and do not have much corporation experience. It's fine to skip it and use the built-in "Smart Supply". Having a working, non-optimal division is still better than having a non-working division.
If you buy the built-in feature, remember to check if it's enabled. If you want to implement a custom script, you can look for some hints at [Smart Supply](./smart-supply.md).
There are not many things else to do in this round. The budget is too low, so you can skip all these things:
- Expand into other industries.
- Buy corporation's upgrades (except Smart Storage).
Use remaining funds to buy these upgrades:
- Only focus on Smart Storage and warehouse upgrade.
- Buy 2 Advert levels.
After that, find the optimal quantities of boost materials and buy them. Do not use "Bulk Purchase", it requires paying upfront. Buying boost materials per second does not need funds because you can go into debt.
## Round 2
Buy "Export".
Upgrade Agriculture division:
- Find a good number for office size. 8 is the optimal size.
- Buy a couple of Advert levels. Advert level 8 is enough for most cases.
Create Chemical division:
- Expanding into Chemical industry is mandatory. Without high-quality Chemicals (material) from Chemical division, output materials in Agriculture will be low-quality, and low-quality materials cannot be sold well.
- Chemical division is a support division, so don't invest much funds on it. Don't waste funds on its Office/Advert upgrades.
- Chemical industry has low boost materials' coefficients, so you should only buy very small number of warehouse upgrade for it. On the other hand, you should not skip Chemical's warehouse upgrade entirely. You still need Chemical division produces an acceptable amount of high-quality Chemical; otherwise, the quality of Chemical used in PRODUCTION state of Agriculture division is reduced too much due to "dilution" in PURCHASE state. For this purpose, 1 warehouse upgrade is enough.
Focus on Smart Storage, Smart Factories, warehouse upgrade (Agriculture).
Waiting for RP is mandatory in this round. It serves 2 purposes:
- Raising RP in Chemical. High RP means high-quality Chemicals (material).
- Raising RP in Agriculture. High RP means high-quality Plants.
- High-quality Plants can be exported to Chemical to create a loop of quality-enhancing process.
- High-quality Plants can be sold easier (higher [MaxSalesVolume](./optimal-selling-price-market-ta2.md)). With your limited budget, you can only increase `MaxSalesVolume` by buying Advert and improving quality of output material. Buying Advert costs money, but waiting for RP is free (except your time).
Waiting for 700RP/390RP in Agriculture/Chemical division respectively is enough. You can wait for more if you want.
## Round 3+
Create Tobacco division in round 3 and set up export route for Plants from Agriculture to Tobacco. This is the optimal product division in this phase.
The basic game loop that you need to do in round 3+ is simple:
- Buy research.
- Buy Wilson and Advert.
- Continuously develop new product.
- Upgrade product division and buy corporation's upgrades.
- Upgrade support divisions.
These are the most important things that you need to focus on:
- Buy Wilson and Advert.
- Continuously develop new product.
- Get high-quality input materials from support division(s).
- Stock up on RP.
- Get Market-TA2 as soon as possible.
Wilson and Advert are extremely important, they are the main factors that make product extremely profitable.
- Check this [section](./wilson-analytics-advert.md) for details about the mechanism of Wilson and Advert.
- When you continuously improve the product division and buy the upgrades with small budget (profit of a few cycles):
- Buy Wilson if you can afford it.
- After that, use at least 20% of current funds to buy Advert.
- Stop buying Wilson and Advert when product division's awareness/popularity reaches max value.
[Product](./product.md) is the center of round 3+.
Product's rating is limited to product's effective rating by quality of input materials. You must make sure that support divisions produce enough high-quality materials for product division. For material divisions, increasing RP is the best way to improve the quality in early rounds. However, in round 3+, the most important factor is `EngineerProduction`, so you must prioritize the "Engineer" job over other jobs. It's especially true for Agriculture due to its mediocre `ScienceFactor`. Check this [section](./quality.md) for details. On the other hand, it's fine to invest minimally in support divisions, as long as they produce enough high-quality materials.
RP is important for product's rating. Do not deplete RP pool, especially right before completing new product.
Check this [section](./unlocks-upgrade-research.md) for more advice about research upgrades.
Office setup is important to efficiently develop new product. There are multiple setups for different purposes:
- Raw production: This setup prioritizes production capability. For support divisions, you should "combine" the prioritization of "Engineer" job with this setup.
- Progress: This setup prioritizes development speed of new product. It's best for product division in round 3 and round 4. The product's development speed is very low in these 2 rounds (especially in round 3). By focusing on development speed and get better product sooner, you can reach the point that you can get an adequate offer faster.
- Profit. This setup prioritizes profit. It's best at the end of a round, before accepting offer.
- Profit-Progress. This setup provides good balance between current profit and development speed of new product. It's best after accepting last offer.
All the setups above can be calculated by an optimizer. However, that optimizer is hard to implement correctly and efficiently. If you are a newbie, you can skip this optimization and spread employees equally across non-R&D jobs. It's not optimal, but you can still reach the endgame after couple hours if you follow other important advice.
There are 2 types of office: main office and support office. Main office is where you develop new product. Support office is where you assign a large number of employees to R&D job to increase RP. The most common setup is 1 main office and 5 support offices. The most important office is the main office, its budget must be much higher than support offices' budget.
The purpose of investment offer is to get large funds and quickly grow the corporation. Better product brings more profit, and higher profit means higher offer. However, it takes a long time to develop early product(s). Sometimes, spending more time to develop better product before accepting offer can harm your overall growth. You must find a good number of products to develop before accepting offer.
Miscellaneous advice:
- Buy tea / throw party every cycle.
- `DesignInvestment` and `AdvertisingInvestment` scale very badly (the exponent is 0.1). It's fine to spend 1% of your current funds for them.
- Create [dummy divisions](./miscellany.md) to get higher offer.
- Prioritize Tobacco division over Chemical division when setting up export routes for Plants. [Export](./miscellany.md) route is FIFO.
You can visit the [official Discord server](https://discord.gg/TFc3hKD) to get access to more information.
@@ -0,0 +1,66 @@
# Industry - Supply chain
## Basic term
Industry consumes input materials and produces output materials/products. Most industries produce either materials or products, some industries produce both of them.
- Material industries are simple to bootstrap. We use them as starting/support industries.
- Product industries are hard to bootstrap, but they generate massive profits.
Each industry has different values of "factor":
- `AICoreFactor`, `HardwareFactor`, `RealEstateFactor`, `RobotFactor`: boost material's coefficient. They are used for calculating [division production multiplier](./boost-material.md).
- `ScienceFactor`:
- With material industry: affect the output material's [quality](./quality.md).
- With product industry: affect the output product's [markup and rating](./product.md).
- `AdvertisingFactor`: affect the number of units that we can sell ([AdvertFactor](./optimal-selling-price-market-ta2.md)).
"Support industry" is the industry that provides high-quality input materials for other industries.
"Endgame" is the very late phase after the division passes the exponential growth. In this phase, the new product is only marginally better than the old products, and the profit increases slowly. For example, the endgame of Tobacco is when profit reaches ~1e98/s.
## Criterion
In order to choose good industries for our supply chain, we must consider many criteria:
- Good synergy between industries. Industries must be able to support each other with the "Export" feature. After the reworking in 2.3, the quality of input material becomes crucial, and importing high-quality materials from other industries is mandatory.
- Must have an easy-to-start material industry for early rounds. This industry must have good combinations of boost materials' coefficients and boost materials' sizes. This ensures a high division product multiplier that is the most crucial factor in early rounds. In 4 boost materials, Real Estate (material, not industry) should be noticed because of its tiny size.
- High `ScienceFactor` is a bonus for the support industry because its output material's quality can be boosted without much investment in early rounds.
- Must have a highly profitable product industry for late phases.
- It's preferred to require material from the starting industry rather than to expand into another support industry.
- High `ScienceFactor`. This is necessary for a high product's rating.
- High `AdvertisingFactor`. This means our product's selling price can be boosted greatly by Wilson and Advert. This is the most important factor for the endgame. `AdvertisingFactor` scales tremendously well when you reach high advert bonuses (Awareness and Popularity). These bonuses are capped at ~1.7977e308.
- Any worthy industry must have at least 1 input material. Having no input material may look convenient at first glance, but it's a trap for newbies. Without input materials, the quality/rating of the output material/product is always capped at the square root of its maximum value.
## Agriculture + Chemical + Tobacco
Agriculture is inarguably the best starting industry. Its `realEstateFactor` is highest among all industries (0.72), and real estate's size is tiny (0.005). It means we can stock up on a huge number of real estate and increase the division product multiplier to an extremely high value in early rounds.
Chemical is the best support industry if we choose Agriculture as the starting industry. It has the highest `ScienceFactor` among all material industries (0.75). As you can see in round 2's strategy, we only need to invest a minimal budget in the Chemical division and it can still adequately boost the Agriculture division (after waiting for some RP).
Agriculture and Chemical have great synergy. Agriculture needs `Chemicals` from Chemical and produces `Plants`. Chemical needs `Plants` from Agriculture and produces `Chemicals`.
Tobacco is an excellent product industry:
- It requires only Plants, and Plants come from Agriculture. Therefore, the quality of input material is not a problem with this industry if we choose Agriculture as the starting industry.
- High `ScienceFactor` (0.75), only below Pharmaceutical.
- High `AdvertisingFactor` (0.2), only below Restaurant and Real Estate.
## Other product industries
All other product industries always have some kind of flaws in them and not be as versatile as Tobacco. For example:
- Pharmaceutical has the highest `ScienceFactor` (0.8) but a low `AdvertisingFactor` (0.16).
- Its products are potentially better than Tobacco's ones. This sounds good in theory, but not in practice. Pharmaceutical requires Chemicals. Chemicals can only be produced by the Chemical industry, and that industry has bad production capability. The early products' effective rating will be low because the Chemical division cannot produce enough high-quality material units. In the end, the offers of round 3 and round 4 are much lower than Tobacco's ones.
- It is worse than Tobacco in the endgame.
- Healthcare has the same `ScienceFactor` as Tobacco (0.75) but the lowest `AdvertisingFactor` (0.11).
- It requires 4 input materials instead of 1 or 2. Those materials include Robots with a coefficient of 10 (the highest value of all industries), and the size of Robots is the biggest among boost materials. This means the required materials take up huge space in the warehouse.
- This industry is the worst one in the endgame due to its extremely low `AdvertisingFactor`.
- Restaurant has the highest `AdvertisingFactor` (0.25) but very low `ScienceFactor` (0.12).
- Its products are significantly worse than Tobacco's ones. It takes too long to hit the exponential growth (due to worse products) and surpass Tobacco in profit.
- It's fine to expand into this industry after Tobacco to have a better endgame.
- Real Estate has the same `AdvertisingFactor` as Restaurant but the lowest `ScienceFactor` (0.05). It requires 4 input materials instead of 1 or 2. This industry has the same potential and problem as Restaurant with its high `AdvertisingFactor` and low `ScienceFactor`. The only difference is that its `ScienceFactor` is even lower than the Restaurant's one.
## Conclusion
Agriculture + Chemical + Tobacco is the most balanced supply chain. It's very easy to bootstrap in early rounds and reaches high profit in late phases for practical purposes.
@@ -0,0 +1,109 @@
# Miscellany
## Corporation's state
Corporation continuously transitions between 5 states: START → PURCHASE → PRODUCTION → EXPORT → SALE → START. 1 cycle of these transitions takes 10 seconds. If you have enough bonus time, it takes 1 second.
START:
- Division:
- Office:
- Calculate: energy, morale, total experience, salary, employee production by jobs.
- Set employees' jobs: copy data from `employeeNextJobs` to `employeeJobs`.
- Material market: update `demand`, `competition`, `marketPrice`.
- Product market: decrease `demand` and increase `competition`.
- Calculate corporation's financial statements: revenue, expenses, profit, dividend, total assets, valuation, share price.
PURCHASE:
- Buy input materials.
- If we have unlocked "Smart Supply", it's used for calculating optimal quantity of input material units.
PRODUCTION:
- Produce output materials and products.
- If new product's `developmentProgress` is greater than or equal to 100, it's finished. New finished product's stats are calculated in this state.
EXPORT: export output materials.
SALE:
- Sell output materials and product.
- If we have unlocked "Market-TA1" / "Market-TA2", it's used for calculating selling price.
Special cases: RP and salary expense are increased in 4 states: PURCHASE, PRODUCTION, EXPORT, SALE.
## Import and export
Importing/exporting material is done in EXPORT state.
EXPORT state is before SALE state. It means you sell the material units remained after being exported.
Export string can use "MAX", "EINV", "IINV", "EPROD" and "IPROD". Read the description in export popup for the meaning of these values.
The optimal export string is `(IPROD+IINV/10)*(-1)`. For example: export "Chemicals" from Chemical division to Agriculture division:
- Agriculture division needs 100 Chemicals/s and has 700 Chemicals in warehouse.
- IPROD = -100 ("Consumption is negative production")
- IINV = 700
- "Export" is expressed by number of units per second, so we want to export:
$$\left(100-\frac{700}{10}\right)=\left(-100+\frac{700}{10}\right)\ast(-1)=\left(IPROD+\frac{IINV}{10}\right)\ast(-1)$$
Export route is FIFO. You can remove an export route by using `cancelExportMaterial` NS API.
Export data is in `material.exports`.
## Use mathematical library
I use the JavaScript ports of these libraries. They don't support JavaScript.
I use the default setting without any tuning. If you tune their parameters properly, their accuracy and performance will be improved.
### Ceres Solver
Quote from <http://ceres-solver.org/>
> Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It can be used to solve Non-linear Least Squares problems with bounds constraints and general unconstrained optimization problems.
JavaScript port: <https://github.com/Pterodactylus/Ceres.js>
We can use it to solve the non-linear systems in these cases:
- Case 1: Find the optimal quantities of boost materials.
- Case 2: Find `CreationJobFactors[JobName]` when calculating product markup.
The accuracy and performance are acceptable, so we employ it case 2. We don't use it in case 1 because there is another optimal solution, it's better in both accuracy and performance.
Quick test for case 2 shows that the accuracy is pretty good:
- `creationJobFactors`:
- Business: 420.103620358641
- Engineer: 29666.47672073447
- Management: 40466.091598191015
- Operations: 25760.399443536793
- Solver's result:
- Business: 420.08121628008024
- Engineer: 29664.894610028987
- Management: 40463.933544920386
- Operations: 25759.025643594476
## Noodles trick
There is a place called "Noodle Bar" in New Tokyo. After going there, there is a button that says "Eat noodles". Eating noodles gives you multiple benefits. Each benefit is miniscule, but you can press that button programmatically. With Corporation, the benefit is:
```typescript
Player.corporation.gainFunds(Player.corporation.revenue * 0.000001, "glitch in reality");
```
In previous versions, the revenue is multiplied by 0.01. If you do it fast enough, it'll raise the investment offer by a considerable amount. Nowadays, this trick is useless.
## Dummy division
Dummy division is the division that you create only to increase the [valuation](./financial-statement.md) and the [investment offer](./financial-statement.md).
Use Restaurant industry for dummy division. Its starting cost is only 10e9.
For dummy division, you only need to expand to 6 cities and buy 6 warehouses. Don't invest in other things (Warehouse/Office/Advert upgrades).
If you start round 3 with large budget, you can create dummy divisions immediately to simplify the script's logic. It's not optimal but still acceptable. However, if the budget is tight, you should not create them at the start of round 3. After completing first product, profit will be high enough to get enough funds to create them without any problem.
@@ -0,0 +1,191 @@
# Office
## Basic information
Employee stats are kept track of as average values. There are 6 average values: `AvgEnergy`, `AvgMorale`, `AvgIntelligence`, `AvgCharisma`, `AvgCreativity`, `AvgEfficiency`. Every time you hire a new employee, these average values are recalculated. They are modified by a randomized number from 50 to 100:
```typescript
this.avgMorale =
(this.avgMorale * this.numEmployees + getRandomInt(averageStat, averageStat)) / (this.numEmployees + 1);
```
Job assignment:
- Each office has 2 records: `employeeJobs` and `employeeNextJobs`. Data in `employeeJobs` (number of employees in each job) is used for calculations of other relevant data like `EmployeeProductionByJob`, `AvgEnergy`, `AvgMorale`, `TotalExperience`. When you call `setJobAssignment`, its parameter is calculated and assigned to `employeeNextJobs`. In the next cycle's START state, data in `employeeNextJobs` will be copied to `employeeJobs`.
- Behavior of `setJobAssignment` may be confused at first glance. Let's say you call it like this: `ns.corporation.setJobAssignment("Agriculture","Sector-12","Operations", 5)`
- If you have 5 \"Operations\" employees, it does nothing.
- If you have 7 \"Operations\" employees, it reduces number of \"Operations\" employees to 5, and set \"Unassigned\" employees to 2.
- If you have 2 \"Operations\" employees, it checks if you have at least 3 \"Unassigned\" employees. If yes, it changes \"Operations\" employees to 5 and reduces \"Unassigned\" employees by 3. If not, it throws error. Essentially, it tries to move employees from \"Unassigned\" to \"Operations\".
- This means the proper way to use `setJobAssignment` is:
- Use it to set all jobs to 0.
- Use it to set all jobs to your requirements.
Total experience is increased in these cases:
- Hire a new employee. Each new employee increases total experience by `getRandomInt(50, 100)`.
- In the START state. Gain per cycle:
$$TotalExperienceGain = 0.0015\ast(TotalEmployees - UnassignedEmployees + InternEmployees\ast 9)$$
- If an office has 100 employees and all employees are assigned to non-intern positions, it gains 0.15 experience/cycle. It's 54 experience/hour without bonus time.
Salary per cycle:
$$Salary = 3\ast TotalEmployees\ast\left(AvgIntelligence+AvgCharisma+AvgCreativity+AvgEfficiency+\frac{TotalExperience}{TotalEmployees}\right)$$
## Upgrade
Upgrade cost:
$$UpgradeCost = BasePrice\ast\left( \frac{\sqrt[3]{1.09} - 1}{0.09} \right)\ast{1.09}^{\frac{CurrentSize}{3}}$$
Upgrade cost from size 3 to size n:
$$UpgradeCost_{From\ 3\ to\ n} = \sum_{k = 3}^{n - 1}{BasePrice\ast\left( \frac{\sqrt[3]{1.09} - 1}{0.09} \right)\ast{1.09}^{\frac{k}{3}}}$$
$$UpgradeCost_{From\ 3\ to\ n} = \sum_{k = 3}^{n - 1}{BasePrice\ast\left( \frac{\sqrt[3]{1.09} - 1}{0.09} \right)\ast\left( \sqrt[3]{1.09} \right)^{k}}$$
$$UpgradeCost_{From\ 3\ to\ n} = BasePrice\ast\left( \frac{\sqrt[3]{1.09} - 1}{0.09} \right)\ast\left( \frac{\left( \sqrt[3]{1.09} \right)^{n} - 1.09}{\sqrt[3]{1.09} - 1} \right)$$
$$UpgradeCost_{From\ 3\ to\ n} = BasePrice\ast\left( \frac{{1.09}^{\frac{n}{3}} - 1.09}{0.09} \right)$$
Upgrade cost size a to size b:
$$UpgradeCost_{From\ a\ to\ b} = BasePrice\ast\left( \frac{{1.09}^{\frac{b}{3}} - {1.09}^{\frac{a}{3}}}{0.09} \right)$$
Maximum size with a given `MaxCost`:
$$MaxSize = 3\ast\log_{1.09}\left( MaxCost\ast\frac{0.09}{BasePrice} + {1.09}^{\frac{CurrentSize}{3}} \right)$$
## Energy and morale
They are calculated in the START state.
They start dropping when your office's number of employees is greater than or equal to 9. The minimum value is 10.
PerfMult is a multiplier that increases/decreases energy/morale.
$$InternMultiplier = 0.002\ast Min\left(\frac{1}{9},\frac{InternEmployees}{TotalEmployees}-\frac{1}{9}\right)\ast 9$$
$$PenaltyMultiplier = \begin{cases}0, & (CorpFunds > 0) \vee (DivisionLastCycleRevenue > DivisionLastCycleExpenses) \newline 0.001, & (CorpFunds < 0) \land (DivisionLastCycleRevenue < DivisionLastCycleExpenses)\end{cases}$$
$$PerfMult = \begin{cases}1.002, & TotalEmployees < 9 \newline 1 + InternMultiplier - PenaltyMultiplier, & TotalEmployees \geq 9\end{cases}$$
Buying tea gives a flat +2 to energy. It costs 500e3 per employee.
When throwing party, `PartyMult` is calculated. It's used in the calculation of morale in the next cycle.
$$PartyMult = 1 + \frac{PartyCostPerEmployee}{10^{7}}$$
`PartyMult` is not affected by the number of employees. Therefore, you can throw a "big party" (high `PartyCostPerEmployee`) when you have 1 employee at low total cost (due to having only 1 employee), then hire the rest of the employees later.
There is a flat randomized reduction of energy/morale per cycle. It's capped at 0.002 per cycle. This is tiny, so it's not a problem.
There is a flat increase of morale if `PartyMult` is greater than 1. `PartyMult` is based on `PartyCostPerEmployee`, so this increase is based on `PartyCostPerEmployee`.
$$IncreaseOfMorale = (PartyMult - 1)\ast 10$$
$$IncreaseOfMorale = \frac{PartyCostPerEmployee}{10^{6}}$$
```typescript
const reduction = 0.002 * marketCycles;
const increase = this.partyMult > 1 ? (this.partyMult - 1) * 10 : 0;
this.avgEnergy = (this.avgEnergy - reduction * Math.random()) * perfMult + (this.teaPending ? 2 : 0);
this.avgMorale = ((this.avgMorale - reduction * Math.random()) * perfMult + increase) * this.partyMult;
```
There are 3 ways to counter the drop of energy/morale:
- Buy tea and throw party. You should always use this option. Writing a script to automate them is very easy.
- Assign Intern. Many people throw around the ratio 1/9 as the way to counter the drop of energy/morale. You can only use that ratio when your corporation/division works fine. If it does not, there is a penalty multiplier (0.001). In this case, you need to use 1/6.
- Buy 2 research upgrades: AutoBrew and AutoPartyManager. They keep energy/morale at maximum value. However, you should never buy them. It's always better to spend your RP on other useful research upgrades or just stock up on RP.
`AvgEnergy` and `AvgMorale` are increased by a randomized amount when we hire a new employee.
```typescript
this.avgMorale = (this.avgMorale * this.numEmployees + getRandomInt(50, 100)) / (this.numEmployees + 1);
this.avgEnergy = (this.avgEnergy * this.numEmployees + getRandomInt(50, 100)) / (this.numEmployees + 1);
```
Optimal `PartyCostPerEmployee`:
- The flat randomized reduction is tiny, so we can ignore it.
- We want to increase `AvgMorale` from `CurrentMorale` to `MaxMorale`:
$$\left( CurrentMorale\ast PerfMult + \frac{PartyCostPerEmployee}{10^{6}} \right)\ast\left( 1 + \frac{PartyCostPerEmployee}{10^{7}} \right) = MaxMorale$$
- Define:
$$a = CurrentMorale$$
$$b = MaxMorale$$
$$k = PerfMult$$
$$x = PartyCostPerEmployee$$
- We have equation:
$$\left( a\ast k + \frac{x}{10^{6}} \right)\ast\left( 1 + \frac{x}{10^{7}} \right) = b$$
$$x_{1} = - 500000\ast\left( \sqrt{(a\ast k - 10)^{2} + 40\ast b} + a\ast k + 10 \right)$$
$$x_{2} = 500000\ast\left( \sqrt{(a\ast k - 10)^{2} + 40\ast b} - a\ast k - 10 \right)$$
- $x_{1}$ is always negative. Therefore, $x_{2}$ is the only solution.
One big party is less cost-effective than multiple small parties. For example: throwing 1 big party for 70→100 morale costs more than throwing 3 small parties: 70→80, 80→90, 90→100.
Don't be a cheapskate when it comes to tea/party. Energy and morale are vital to an efficient office. Check the next part for the formulas.
- It's fine to spend 500e3 per employee when throwing party. You can spend more if you want.
- Try to maintain maximum energy/morale at all times. Personally, I always buy tea / throw party when energy/morale decreases to 99.5 (109.5, if I bought the relevant research upgrades).
- In round 1 and 2, the office's size is small, it's usually smaller than 9, so energy/morale is not a problem. In round 3+, you should buy tea / throw party every cycle.
## Employee production by job
In each cycle's START state, all stats are used for calculating "production" values. These values are saved in `office.employeeProductionByJob` and used later for calculating:
- RP.
- Material's quality.
- Product's stats.
- Division raw production.
- Material/product's MaxSalesVolume.
Formulas:
- Calculate multipliers of Intelligence, Charisma, Creativity, and Efficiency. They are the product of average values, upgrade benefit and research benefit.
- Production base:
$$ProductionBase = AvgMorale\ast AvgEnergy\ast 10^{-4}$$
- Experience:
$$Exp = \frac{TotalExperience}{TotalEmployees}$$
- Production multiplier:
- Operations: $$ProductionMultiplier = 0.6\ast IntelligenceMult + 0.1\ast CharismaMult + Exp + 0.5\ast CreativityMult + EfficiencyMult$$
- Engineer: $$ProductionMultiplier = IntelligenceMult + 0.1\ast CharismaMult + 1.5\ast Exp + EfficiencyMult$$
- Business: $$ProductionMultiplier = 0.4\ast IntelligenceMult + CharismaMult + 0.5\ast Exp$$
- Management: $$ProductionMultiplier = 2\ast CharismaMult + Exp + 0.2\ast CreativityMult + 0.7\ast EfficiencyMult$$
- Research and Development: $$ProductionMultiplier = 1.5\ast IntelligenceMult + 0.8\ast Exp + CreativityMult + 0.5\ast EfficiencyMult$$
- $EmployeesJobCount = office.employeeJobs[JobName]$
- Employee production by job:
$$EmployeeProductionByJob = EmployeesJobCount\ast ProductionMultiplier\ast ProductionBase$$
## Calculate employee's stat
4 stats `AvgIntelligence`, `AvgCharisma`, `AvgCreativity`, `AvgEfficiency` are inaccessible through NS API.
We can calculate them by using the formulas from the previous part and [Ceres Solver](./miscellany.md). In 5 jobs (i.e., Operations, Engineer, Business, Management, and Research & Development), we need at least 4 jobs having 1 employee at the minimum to use this solution.
@@ -0,0 +1,141 @@
# Optimal selling price - Market-TA2
## Market price and markup limit
Market price:
- Material: `material.marketPrice`.
- Product: `product.productionCost`. This value is based on `ProductMarketPriceMult`, input materials' `MarketPrice` and `Coefficient`.
- $n = {Number\ of\ input\ materials}$
- $ProductMarketPriceMult = 5$
$$ProductMarketPrice = ProductMarketPriceMult\ast\sum_{i = 1}^{n}{MaterialMarketPrice_i\ast MaterialCoefficient_i}$$
Markup limit: This is how high you can raise the price above the market price before the sales volume is affected negatively.
For example: Let's say a product has MarketPrice = 5000 and MarkupLimit = 700. If you set the price smaller than or equal to 5700, the sales volume of this product will not be penalized.
- Material:
$$MaterialMarkupLimit = \frac{MaterialQuality}{MaterialMarkup}$$
- Product:
$$ProductMarkupLimit = \frac{Max(ProductEffectiveRating,0.001)}{ProductMarkup}$$
## Sales volume
`MaxSalesVolume` is the maximum number of items that you can sell in the SALE state.
`PotentialSalesVolume` is the sales volume in theory.
`MarkupMultiplier` is defined by a piecewise function depending on selling price, market price, and markup limit.
$$MaxSalesVolume = PotentialSalesVolume\ast MarkupMultiplier$$
### Potential sales volume
`PotentialSalesVolume` depends on:
- The quality of materials and the effective rating of products.
- Number of Business employees.
- Advert.
- Demand and Competition.
- ABC SalesBots.
It is the product of 6 multipliers:
$$PotentialSalesVolume = \ ItemMultiplier\ast BusinessFactor\ast AdvertFactor\ast MarketFactor\ast SaleBotsBonus\ast ResearchBonus$$
- Quality/EffectiveRating multiplier:
- Material:
$$ItemMultiplier = MaterialQuality + 0.001$$
- Product:
$$ItemMultiplier = 0.5\ast(ProductEffectiveRating)^{0.65}$$
- Business factor:
- `BusinessProduction = 1 + office.employeeProductionByJob["Business"]`
$${BusinessFactor = (BusinessProduction)}^{0.26} + \left({BusinessProduction}\ast{0.0001}\right)$$
- Advert factor:
$$AwarenessFactor = (Awareness + 1)^{IndustryAdvertisingFactor}$$
$$PopularityFactor = (Popularity + 1)^{IndustryAdvertisingFactor}$$
$$RatioFactor = \begin{cases}Max(0.01,\frac{Popularity + 0.001}{Awareness}), & Awareness \neq 0 \newline 0.01, & Awareness = 0 \end{cases}$$
$$AdvertFactor = (AwarenessFactor\ast PopularityFactor\ast RatioFactor)^{0.85}$$
- Market factor:
$$MarketFactor = Max\left(0.1,{Demand\ast(100 - Competition)}\ast{0.01}\right)$$
- Corporation's upgrade bonus: `SalesBots` bonus.
- Division's research bonus: this is always 1. Currently there is not any research that increases the sales bonus.
### Markup multiplier
$$MarkupMultiplier = \begin{cases}10^{12} & SellingPrice \in (-\infty, 0] \newline \frac{MarketPrice}{SellingPrice} & SellingPrice \in (0, MarketPrice] \newline 1 & SellingPrice \in (MarketPrice, MarketPrice + MarkupLimit] \newline \left(\frac{MarkupLimit}{SellingPrice - MarketPrice}\right)^{2} & SellingPrice \in (MarketPrice + MarkupLimit, \infty) \end{cases}$$
Analysis for 4 ranges, in the same order of the above formula:
- Range 1: We can set `SellingPrice` to 0 and get an extremely high `MarkupMultiplier`. With this high value, we can sell all units, regardless of other factors. This is the fastest way to discard stored units.
- Range 2: `MarkupMultiplier` is a "bonus multiplier". It boosts `PotentialSalesVolume`. This means you can boost the sales volume by setting `SellingPrice` below `MarketPrice`.
- Range 3: `MaxSalesVolume` = `PotentialSalesVolume` (No bonus, no penalty). Market TA1 always set `SellingPrice` to `MarketPrice + MarkupLimit`. This means you can sell things at a price higher than the market price while ensuring the sales volume is not affected negatively.
- Range 4: `MarkupMultiplier` is a penalty modifier. More about this case later.
### Maximize sales volume
In order to increase `MaxSalesVolume`, you can:
- Improve the quality of materials and the effective rating of products.
- Use more Business employees.
- Increase the level of Advert.
- Increase the level of ABC SalesBots.
- Set the price lower than the market price. Note that you should NOT do this in most cases. If you need to do this, it's very likely that your strategy is flawed, and you need to fix it.
## Optimal selling price
Let's say that we want to sell all stored units. Define:
$$ExpectedSalesVolume = \frac{StoredUnits}{10}$$
Assume that we can sell all stored units.
$$MaxSalesVolume = ExpectedSalesVolume$$
$$PotentialSalesVolume\ast MarkupMultiplier = ExpectedSalesVolume$$
$$PotentialSalesVolume\ast\left(\frac{MarkupLimit}{SellingPrice - MarketPrice}\right)^{2} = ExpectedSalesVolume$$
$$\frac{MarkupLimit}{SellingPrice - MarketPrice} = \sqrt{\frac{ExpectedSalesVolume}{PotentialSalesVolume}}$$
$$SellingPrice = \frac{MarkupLimit\ast\sqrt{PotentialSalesVolume}}{\sqrt{ExpectedSalesVolume}} + MarketPrice$$
There are 2 cases:
- When `PotentialSalesVolume` > `ExpectedSalesVolume`, we can accept a penalty modifier (`MarkupMultiplier` < 1) and raise the price above `MarketPrice + MarkupLimit`.
- When `PotentialSalesVolume` <= `ExpectedSalesVolume`: `MarketPrice` <= `SellingPrice` <= `MarketPrice + MarkupLimit`.
- The selling price is still higher than the market price.
- There is no penalty modifier. In this case, we already cannot sell all items, so having no penalty modifier means that the situation is at least not worse.
This is what Market-TA2 does. It assumes that we can sell all stored units without any problems (`PotentialSalesVolume` > `ExpectedSalesVolume`) and can accept a penalty modifier. If that's the case, it assumes `MaxSalesVolume = ExpectedSalesVolume`, "exploits" the range 4 in the previous part, and finds the highest possible price. Otherwise, the price is in range 3, and `MaxSalesVolume` is not affected negatively.
This is also the reason why we should not bother with Market-TA1. It simply sets `SellingPrice = MarketPrice + MarkupLimit`. This means Market-TA1 only sets a "safe" `SellingPrice` for us and guarantees that we are not penalized due to setting the price too high. However, in most cases (high-quality materials, good products, high Advert, etc.), `PotentialSalesVolume` is much higher than `ExpectedSalesVolume`. In this case, the "safe" `SellingPrice` from Market-TA1 is too low, and we can find a much higher `SellingPrice` with Market-TA2.
In order to use the formula of Market-TA2, we need `MarkupLimit`. With products, we need `ProductMarkup` to calculate `MarkupLimit`, but `ProductMarkup` is inaccessible via NS API. We have two solutions:
- Calculate the approximation value. Check the previous section to see how to do this.
- Calculate `MarkupLimit` directly:
- Set `SellingPrice` to a very high value. It must be so high that we cannot sell all produced units (`MaxSalesVolume < ExpectedSalesVolume`). This forces the game to apply the penalty modifier that contains `MarkupLimit`.
- Wait for 1 cycle to get `ActualSalesVolume`. It's `product.actualSellAmount` and `material.actualSellAmount`.
- Use `ActualSalesVolume` in place of `ExpectedSalesVolume` in the previous formula: $MarkupLimit = (SellingPrice - MarketPrice)\ast\sqrt{\frac{ActualSalesVolume}{M}}$
- Calculate `ProductMarkup` from `MarkupLimit`, save `ProductMarkup` to reuse later. `ProductMarkup` never changes.
@@ -0,0 +1,176 @@
# Product
## Overview
The product industry is much better than the material industry in the late phases because we can sell products at ridiculously high prices.
Market-TA2 automatically sets the optimal prices for products. Check this [section](./optimal-selling-price-market-ta2.md) to see how to implement a custom Market-TA2 script. Implementing a custom Market-TA2 script is the best optimization in round 3+.
Products need to be developed before being produced. We can put multiple products in the development queue, but only one product can be developed at a time.
There is a limit on how many products a division can have. The default limit is 3. There are 2 research upgrades that increase that limit. However, those research upgrades are nearly useless because, in most cases, there is no point in increasing the maximum number of products. Check this [section](./unlocks-upgrade-research.md) for details. When we reach the limit, we need to discontinue a product before developing a new one.
We need to continuously develop new products. New products are almost always better than the old ones and generate much more profit.
The product's markup and effective rating are extremely important because they are part of [MaxSalesVolume](./optimal-selling-price-market-ta2.md)'s calculation.
The product's effective rating is based on the product's rating and the input material's quality. Check this [section](./quality.md) to see how input material's quality affects the product's rating and effective rating. This is why we need a support division that produces high-quality material for the product division.
The product's markup and rating are based on:
- `CreationJobFactors[JobName]`. More about this in the next part.
- RP. This is why we should stock up on RP.
- `ResearchFactor`. It is the industry's `scienceFactor`.
- Design investment and advertising investment. Game UI shows them as "Design investment" and "Marketing investment". These two investments are not too important because their exponents in the formulas are very low. It's fine to use only 1% of current funds for them.
Office's upgrade and employee stats' upgrades are very important for products because they increase employee production. High employee production means high `CreationJobFactors` and RP. Those upgrades and products create a powerful loop: More upgrades → Better product → Higher profit → More upgrades.
Office setup is important to efficiently develop new products. Check this [section](./general-advice.md) for advice on how to set up the office.
## Formula
`CreationJobFactors[JobName]` are values accumulated over the time that product was developed. `DevelopmentProgress` starts at 0. In each cycle:
- Total employee production:
$$TotalEmployeeProd = OperationsProd + EngineerProd + ManagementProd$$
- Management factor:
$$ManagementFactor = 1 + \frac{ManagementProd}{1.2\ast TotalEmployeeProd}$$
- Product development multiplier:
$$ProductDevelopmentMultiplier = \left( (EngineerProd)^{0.34} + (OperationsProd)^{0.2} \right)\ast ManagementFactor$$
- Progress:
$$Progress = 0.01\ast ProductDevelopmentMultiplier$$
- Development progress:
$$DevelopmentProgress = DevelopmentProgress + Progress$$
- `CreationJobFactors[JobName]`:
$$CreationJobFactors\lbrack JobName\rbrack = CreationJobFactors\lbrack JobName\rbrack + {\lbrace EmployeeJob\rbrace Prod\ast Progress}\ast{0.01}$$
&nbsp;
When `DevelopmentProgress` reaches 100, product is finished.
- Define:
$$A = \ CreationJobFactors\lbrack Engineer\rbrack$$
$$B = \ CreationJobFactors\lbrack Management\rbrack$$
$$C = \ CreationJobFactors\lbrack RnD\rbrack$$
$$D = \ CreationJobFactors\lbrack Operations\rbrack$$
$$E = \ CreationJobFactors\lbrack Business\rbrack$$
$$TotalCreationJobFactors = A + B + C + D + E$$
- {JobName}Ratio:
$$EngineerRatio = \frac{A}{TotalCreationJobFactors}$$
$$ManagementRatio = \frac{B}{TotalCreationJobFactors}$$
$$RnDRatio = \frac{C}{TotalCreationJobFactors}$$
$$OperationsRatio = \frac{D}{TotalCreationJobFactors}$$
$$BusinessRatio = \frac{E}{TotalCreationJobFactors}$$
- Design investment multiplier:
$$DesignInvestMult = 1 + {(DesignInvestment)^{0.1}}\ast{0.01}$$
- Science multiplier:
$$ScienceMult = 1 + {(RP)^{ResearchFactor}}\ast{0.00125}$$
- Balance multiplier:
$$BalanceMult = 1.2\ast EngineerRatio + 0.9\ast ManagementRatio + 1.3\ast RnDRatio + 1.5\ast OperationsRatio + BusinessRatio$$
- Total multiplier:
$$TotalMult = BalanceMult\ast DesignInvestMult\ast ScienceMult$$
- Product's quality:
$$TotalMult\ast (0.1\ast A + 0.05\ast B + 0.05\ast C + 0.02\ast D + 0.02\ast E)$$
- Product's performance:
$$TotalMult\ast (0.15\ast A + 0.02\ast B + 0.02\ast C + 0.02\ast D + 0.02\ast E)$$
- Product's durability:
$$TotalMult\ast (0.05\ast A + 0.02\ast B + 0.08\ast C + 0.05\ast D + 0.05\ast E)$$
- Product's reliability:
$$TotalMult\ast (0.02\ast A + 0.08\ast B + 0.02\ast C + 0.05\ast D + 0.08\ast E)$$
- Product's aesthetics:
$$TotalMult\ast (0.08\ast B + 0.05\ast C + 0.02\ast D + 0.1\ast E)$$
- Product's features:
$$TotalMult\ast (0.08\ast A + 0.05\ast B + 0.02\ast C + 0.05\ast D + 0.05\ast E)$$
- Product's rating:
- If an industry produces product, it has its own `RatingWeights` for its product. `RatingWeights` contains coefficients of 6 stats: quality, performance, durability, reliability, aesthetics, features. For example: Tobacco's `RatingWeights`:
- Quality's coefficient: 0.7.
- Durability's coefficient: 0.1.
- Aesthetics' coefficient: 0.2.
- `RatingWeights` is `industryData.product.ratingWeights`.
- Formula:
$$ProductRating = \sum_{i = 1}^{6}{{ProductStat}_i\ast{StatCoefficient}_i}$$
- Advertising investment multiplier:
$$AdvertInvestMult = 1 + {(AdvertisingInvestment)^{0.1}}\ast{0.01}$$
- Business-Management ratio:
$$BusinessManagementRatio = Max\left( BusinessRatio + ManagementRatio,\ \left( \frac{1}{TotalCreationJobFactors} \right) \right)$$
- Product's markup:
$$ProductMarkup = \frac{100}{AdvertInvestMult\ast(ProductQuality + 0.001)^{0.65}\ast BusinessManagementRatio}$$
- Product's demand:
$$Demand = \begin{cases}Min(100,AdvertInvestMult\ast(100\ast(Popularity/Awareness))), & Awareness \neq 0 \newline 20, & Awareness = 0 \end{cases}$$
- Product's competition:
$$Competition = Random(0,70)$$
- Product's size:
- It's `product.size`.
- Formula:
$$ProductSize = \sum_{i = 1}^{NumberOfInputMaterials}{{InputMaterialSize}_i\ast{InputMaterialCoefficient}_i}$$
## Approximation value of product markup
In order to calculate product markup, we need:
- `CreationJobFactors[JobName]`
- `RP`
- `ResearchFactor`
- `DesignInvestment`
- `AdvertisingInvestment`
Product markup is calculated when product is finished. At that time, there is one thing that we cannot get: `CreationJobFactors[JobName]`, because there is not any NS API to query it. There are 2 approaches for this problem:
- Manually record them. This means that we simulate `product.creationJobFactors`. This approach is simple, but it has a big problem: if we miss any cycle, the data is invalid.
- Calculate them directly. Product's stats are public data, so with above formulas, we have a system of 6 functions with only 5 variables. We can use [Ceres Solver](./miscellany.md) to find its solution.
@@ -0,0 +1,71 @@
# Quality
## Basic term
Let's define some terms:
- `AvgInputQuality`: average quality of input materials.
- `MaxOutputQuality`: maximum value of output material's quality.
- `OutputQuality`: final value of output material's quality. This value is always less than or equal to `MaxOutputQuality`.
- `MaxOutputRating`: maximum value of output product's rating.
- `OutputRating`: final value of output product's rating. This value is always less than or equal to `MaxOutputRating`.
Each industry has a set of input materials and their coefficients, for example, Agriculture needs Water and Chemicals, their coefficients are [0.5, 0.2] respectively. These coefficients do not affect `AvgInputQuality`. `AvgInputQuality` is the mean value of qualities of input materials in warehouse. For example, if Agriculture division's warehouse has Water (quality 1) and Chemicals (quality 11), `AvgInputQuality` is (1+11)/2.
Purchased material is low-quality. Its quality is always 1.
When you import/export your materials between different divisions, you can see quality of some input materials constantly change. Quality is high after EXPORT state, but it reduces after PURCHASE state. Qualities of the materials in warehouse are recalculated in these 2 states.
In PURCHASE state, material's quality is "diluted" by low-quality purchased material (quality 1).
$$Quality = \frac{Quality\ast CurrentQuantity + BuyAmount}{CurrentQuantity + BuyAmount}$$
In PRODUCTION state, the "diluted" quality value is used for calculating `AvgInputQuality`.
In EXPORT state:
$$Quality = \frac{Quality\ast CurrentQuantity + ImportQuality\ast ImportAmount}{CurrentQuantity + ImportAmount}$$
The production capability of support division should be balanced. The `ImportAmount` (the number of material units that the support division exports) does not need to equal the required number of input material units, but it should also not be too small.
## Material
`MaxOutputQuality` is sum of 3 values:
- Engineer summand:
- `EngineerProduction = office.employeeProductionByJob["Engineer"]`
$$EngineerSummand = \frac{EngineerProduction}{90}$$
- Research point summand:
$$ResearchPointSummand = (RP)^{IndustryScienceFactor}$$
- AI Cores summand (if there is AI Cores in the warehouse):
$$AICoresSummand = AICoresQuantity^{IndustryAICoreFactor}\ast{0.001}$$
Output quality:
$$OutputQuality = \sqrt{MaxOutputQuality}\ast AvgInputQuality$$
With formulas above, we have these conclusions:
- In early rounds, increasing RP is the best way to improve `MaxOutputQuality`. This is especially true for industry with high science factor like Chemical.
- In late rounds (round 3+), we have large funds to upgrade offices. In this case, the most important factor of `MaxOutputQuality` is `EngineerProduction`. "Engineer" is more significant than "Research & Development".
- `OutputQuality` starts at square root of `MaxOutputQuality`. `AvgInputQuality` increases it until it reaches `MaxOutputQuality`.
- This is a simple strategy for checking if we need to increase `AvgInputQuality`:
- If square of `AvgInputQuality` is greater than or equal to current output quality, it's fine.
- If not, you need to increase input material's quality. It usually means you need to improve the support division.
## Product
`MaxOutputRating` is product.rating.
Game UI shows `OutputRating` as "Effective rating"
Output rating:
$$OutputRating = \sqrt{MaxOutputRating}\ast AvgInputQuality$$
Use same strategy as material for checking `AvgInputQuality`.
@@ -0,0 +1,51 @@
# Smart Supply
## Logic
Create a function called `getLimitedRawProduction`:
- Calculate `RawProduction`.
- Multiply `RawProduction` by 10.
- Calculate `RequiredStorageSpaceOfEachOutputUnit`. It is the net change in warehouse's storage space when producing an output unit.
- If `RequiredStorageSpaceOfEachOutputUnit` is greater than 0:
- Calculate `MaxNumberOfOutputUnits`. It is the maximum number of units that we can produce and store in warehouse's free space.
- Limit `RawProduction` to `MaxNumberOfOutputUnits` if needed.
Create a map called `SmartSupplyData`. Its key is `${divisionName}|${city}`. Its value is the `TotalRawProduction` that will be calculated later.
After PURCHASE state:
- Initialize `TotalRawProduction` with 0.
- If division produces materials: call `getLimitedRawProduction`, then add the returned value to `TotalRawProduction`.
- If division produces products:
- Loop through all products of the division.
- If the product is finished, call `getLimitedRawProduction`, then add the returned value to `TotalRawProduction`.
- Set `TotalRawProduction` to `SmartSupplyData`.
Before PURCHASE state:
- Check if warehouse is congested. If it is, alert player and try to mitigate the situation.
- Find required quantity of each input material to produce material/product:
- Get `TotalRawProduction` from `SmartSupplyData`.
- Multiply `TotalRawProduction` with input material's coefficient.
- Find which input material creates the least number of output units.
- Align all the input materials to the smallest amount.
- Calculate the total size of all input materials we are trying to buy.
- If there is not enough free space, we apply a multiplier to required quantity to not overfill warehouse.
- Deduct the number of stored input material units from the required quantity.
- Buy input materials.
## Detect warehouse congestion
Warehouse can be congested due to multiple reasons. One common case is when the logic of calculating required quantity of input materials does not take into account of free space and stored input materials units in warehouse. When it happens, warehouse is filled with excessive input materials and the production process is halted completely due to no free space for produced units.
For each case, we need to find way(s) to detect congestion and mitigate it. In the case above, we can use this simple heuristic:
- Create a map called `WarehouseCongestionData`. Its key is `${divisionName}|${city}`. Its value is the number of times that we suspect the warehouse is congested.
- In each cycle, check `material.productionAmount` and `product.productionAmount` of output material/product.
- If `productionAmount` is 0, increase the entry's value of this warehouse in the map by 1. If not, set the entry's value to 0.
- If the entry's value is greater than 5, the warehouse is very likely congested.
- This heuristic is based on the observation: when warehouse is filled with excessive input materials, the production process is halted completely, this means `productionAmount` is 0. We wait for 5 times to reduce false positives.
- When we start our Smart Supply script, `productionAmount` of output material/product may be 0, because nothing controls the production process in previous cycles.
When there are excessive input materials, discarding all of them is the simplest mitigation measure. It's inefficient, but it's the fastest way to make our production line restart.
@@ -0,0 +1,174 @@
# Unlocks - Upgrade - Research
## Unlocks
| **Name** | **Price** | **Description** |
| ------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Export | 20e9 | Allow exporting material between different divisions. Extremely important. Buy it at the start of round 2. |
| Smart Supply | 25e9 | Enable "Smart Supply" feature. Only buy it if you don't implement your custom [Smart Supply](./smart-supply.md) script. |
| Market Research - Demand | 5e9 | Grant access to [Demand](./demand-competition.md) data. You need it to implement a custom [Market-TA2](./optimal-selling-price-market-ta2.md) script. |
| Market Data - Competition | 5e9 | Grant access to [Competition](./demand-competition.md) data. You need it to implement a custom [Market-TA2](./optimal-selling-price-market-ta2.md) script. |
| Shady Accounting | 500e12 | Reduce [DividendTax](./financial-statement.md) by 0.05 |
| Government Partnership | 2e15 | Reduce [DividendTax](./financial-statement.md) by 0.1 |
&nbsp;
## Upgrade
Each upgrade has different `BasePrice`, `PriceMult`, `Benefit.
Most upgrades affect all divisions.
There are 3 special upgrades. These upgrades only affect its division and have different formulas for cost/benefits.
- Warehouse. Check this [part](./warehouse.md).
- Office. Check this [part](./office.md).
- Advert. Check this [part](./wilson-analytics-advert.md).
Normal upgrade's formulas:
- Upgrade cost:
$$UpgradeCost = BasePrice\ast{PriceMult}^{CurrentLevel}$$
- Upgrade cost from level 0 to level n:
$$UpgradeCost_{From\ 0\ to\ n} = \sum_{k = 0}^{n - 1}{BasePrice\ast {PriceMult}^k}$$
$$UpgradeCost_{From\ 0\ to\ n} = BasePrice\ast\left( \frac{1 - {PriceMult}^{n}}{1 - PriceMult} \right)$$
$$UpgradeCost_{From\ 0\ to\ n} = BasePrice\ast\left( \frac{{PriceMult}^{n} - 1}{PriceMult - 1} \right)$$
- Upgrade cost level a to level b:
$$UpgradeCost_{From\ a\ to\ b} = \sum_{k = 0}^{b - 1}{BasePrice\ast {PriceMult}^k} - \sum_{k = 0}^{a - 1}{BasePrice\ast {PriceMult}^k}$$
$$UpgradeCost_{From\ a\ to\ b} = BasePrice\ast\left( \frac{{PriceMult}^{b} - 1}{PriceMult - 1} \right) - BasePrice\ast\left( \frac{{PriceMult}^{a} - 1}{PriceMult - 1} \right)$$
$$UpgradeCost_{From\ a\ to\ b} = BasePrice\ast\left( \frac{{PriceMult}^{b} - {PriceMult}^{a}}{PriceMult - 1} \right)$$
- Maximum upgrade level with a given `MaxCost`:
$$MaxUpgradeLevel = \log_{PriceMult}\left( MaxCost\ast\frac{PriceMult - 1}{BasePrice} + (PriceMult)^{CurrentLevel} \right)$$
- Benefit: All benefits are multipliers. `BaseBenefit` is 1.
$$Benefit = BaseBenefit + Benefit\ast CurrentLevel$$
&nbsp;
Normal upgrades:
| **Name** | **Base price** | **Price multiplier** | **Benefit** | **Type** |
| ---------------------------------- | -------------- | -------------------- | ----------- | ----------------------- |
| SmartFactories | 2e9 | 1.06 | 0.03 | Production |
| SmartStorage | 2e9 | 1.06 | 0.1 | Storage |
| WilsonAnalytics | 4e9 | 2 | 0.005 | Advert's benefits |
| NuoptimalNootropicInjectorImplants | 1e9 | 1.06 | 0.1 | Employee's creativity |
| SpeechProcessorImplants | 1e9 | 1.06 | 0.1 | Employee's charisma |
| NeuralAccelerators | 1e9 | 1.06 | 0.1 | Employee's intelligence |
| FocusWires | 1e9 | 1.06 | 0.1 | Employee's efficiency |
| ABCSalesBots | 1e9 | 1.07 | 0.01 | Sales |
| ProjectInsight | 5e9 | 1.07 | 0.05 | RP |
&nbsp;
Special upgrades:
| **Name** | **Base price** | **Price multiplier** | **Type** |
| --------- | -------------- | -------------------- | -------------------- |
| Warehouse | 1e9 | 1.07 | Storage |
| Office | 4e9 | 1.09 | Office's size |
| Advert | 1e9 | 1.06 | Awareness/Popularity |
&nbsp;
Advice:
- Round 1:
- SmartStorage and Warehouse are the most important upgrades in this round.
- Only buy 1 or 2 Advert level(s).
- Round 2:
- SmartFactories, SmartStorage and Warehouse are the most important upgrades in this round.
- Only buy 1 Office level and a couple of Advert levels for Agriculture division.
- Do not buy Office/Advert for Chemical division.
- Check this [section](./general-advice.md) for more advice, especially for round 3+.
## Research
Each research has a set of multipliers. For example: `sciResearchMult`, `productionMult`, etc.
Benefit of research type is the product of all research's multiplier of the same type.
| **Type** | **Research** | **Multiplier** | **Effect** |
| --------------------- | --------------------------------------------- | -------------- | ----------------------- |
| advertisingMult | No research | 1 | Advert's benefits |
| employeeChaMult | CPH4 Injections | 1.1 | Employee's charisma |
| employeeCreMult | CPH4 Injections | 1.1 | Employee's creativity |
| employeeEffMult | CPH4 Injections, Overclock | 1.1\*1.25 | Employee's efficiency |
| employeeIntMult | CPH4 Injections, Overclock | 1.1\*1.25 | Employee's intelligence |
| productionMult | Drones -- Assembly Self-Correcting Assemblers | 1.2\*1.1 | Production |
| productProductionMult | uPgrade: Fulcrum | 1.05 | Product's production |
| salesMult | No research | 1 | Sales |
| sciResearchMult | Hi-Tech R&D Laboratory | 1.1 | RP |
| storageMult | Drones - Transport | 1.5 | Storage |
&nbsp;
Research list:
| **Name** | **Cost** | **Description** |
| ----------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Hi-Tech R&D Laboratory | 5000 | Top priority. Increase RP gain rate. It is the prerequisite of all other research upgrades. |
| Market-TA.I | 20000 | Useless. It is the prerequisite of Market-TA.II. |
| Market-TA.II | 50000 | Top priority if you don't write custom script. Check this [section](./optimal-selling-price-market-ta2.md) to see how to write custom script. |
| Automatic Drug Administration | 10000 | It is the prerequisite of Go-Juice and CPH4 Injections. |
| Go-Juice | 25000 | Useful. Increase maximum energy. |
| CPH4 Injections | 25000 | Useful. Increase employee's stats. |
| Overclock | 15000 | Useful. Increase employee's stats. It is the prerequisite of Sti.mu. |
| Sti.mu | 30000 | Useful. Increase maximum morale. |
| Drones | 5000 | It is the prerequisite of Drones - Assembly and Drones - Transport. |
| Drones - Assembly | 25000 | Useful. Increase all productions. |
| Drones - Transport | 30000 | Useful. Increase warehouse's storage space. |
| Self-Correcting Assemblers | 25000 | Useful. Increase all productions. |
| uPgrade: Fulcrum | 10000 | Useful. Increase product's production. |
| uPgrade: Capacity.I | 20000 | Not useful. The cost is too high for its mediocre benefit. Increase maximum number of products by 1 (from 3 to 4). |
| uPgrade: Capacity.II | 30000 | Not useful. The cost is too high for its mediocre benefit. Increase maximum number of products by 1 (from 4 to 5). |
| uPgrade: Dashboard | 5000 | Useless. |
| AutoBrew | 12000 | Useless. |
| AutoPartyManager | 15000 | Useless. |
| HRBuddy-Recruitment | 15000 | Useless. |
| HRBuddy-Training | 20000 | Useless. |
&nbsp;
Advice:
- Do not deplete entire RP pool to buy research. You should only buy research if it costs less than half of the RP pool. Personally, my conditions for buying research upgrades are:
- For energy/morale and employee's stats: if it costs less than 20% of RP pool.
- For production: if it costs less than 10% of RP pool.
- If you don't have a custom Market-TA2 script, you must prioritize Market-TA1 and Market-TA2. Market-TA1 is useless, the only reason to buy it is because it's the prerequisite of Market-TA2. If you buy them, you should stock up on RP and buy them together. However, I recommend implementing a custom Market-TA2 ASAP. Market-TA1 and Market-TA2 cost 70000 RP, that's a huge number of RP at the start of round 3+. **Implementing a custom Market-TA2 script is the best optimization in round 3+.**
- After that, you should prioritize research upgrades for higher maximum energy/morale and employee's stats over production. Research upgrades for production are nice to have, but it's much less important than energy/morale/employee's stats.
- My research order for higher maximum energy/morale and employee's stats: Overclock → Sti.mu → Automatic Drug Administration → Go-Juice → CPH4 Injections.
- Do not buy these useless ones:
- uPgrade: Dashboard
- AutoBrew
- AutoPartyManager
- HRBuddy-Recruitment
- HRBuddy-Training
- In most cases, uPgrade: Capacity.I and uPgrade: Capacity.II are useless. New products are usually much better than the old ones, so there is no point in increasing the maximum number of products. The only exception is when you reach the endgame. In the endgame, new products are only marginally better than the old ones, so having more product slots may be beneficial. However, even in the endgame, those research upgrades may do more harm than good. In the endgame, the warehouse's size and high-quality input materials are serious bottlenecks. Having more product slots means that you need more free space in the warehouse and more units of input materials. In some cases, increasing product slots actually reduces the overall profit. You need to fine-tune it per use case.
You can exchange hashes for RP if you have SF9. This number of RP is added to all divisions.
RP gain rate:
- RP is increased in 4 states: PURCHASE, PRODUCTION, EXPORT and SALE.
- RP gain per city per state:
- `RnDProduction = office.employeeProductionByJob["Research & Development"]`
$$RPGain = 0.004\ast(RnDProduction)^{0.5}\ast UpgradeMultiplier\ast ResearchMultiplier$$
- Industry's `ScienceFactor` does not affect RP gain rate.
@@ -0,0 +1,32 @@
# Warehouse
Warehouse starts at level 1 after being bought. The initial price is 5e9.
`BasePrice` in the following formulas is the upgrade's base price (1e9), not the initial price above.
Warehouse upgrade cost: its formula is a bit different from other upgrades (the exponent is `CurrentLevel+1` instead of `CurrentLevel`):
$$UpgradeCost = BasePrice\ast{1.07}^{CurrentLevel + 1}$$
Upgrade cost for buying from level 1 to level n:
$$UpgradeCost_{From\ 1\ to\ n} = \sum_{k = 2}^{n}{BasePrice\ast {1.07}^k}$$
$$UpgradeCost_{From\ 1\ to\ n} = BasePrice\ast\left( \frac{{1.07}^{n + 1} - {1.07}^{2}}{0.07} \right)$$
Upgrade cost for buying from level a to level b:
$$UpgradeCost_{From\ a\ to\ b} = BasePrice\ast\left( \frac{{1.07}^{b + 1} - {1.07}^{a + 1}}{0.07} \right)$$
Maximum level with a given `MaxCost`:
$$MaxLevel = (log_{1.07}\left(MaxCost\ast\frac{0.07}{BasePrice} + {1.07}^{CurrentLevel+1} \right)) - 1$$
Warehouse size:
- Upgrade multiplier: multiplier from Smart Storage.
- Research multiplier: multiplier from research.
$$WarehouseSize = WarehouseLevel\ast 100\ast UpgradeMultiplier\ast ResearchMultiplier$$
@@ -0,0 +1,39 @@
# Wilson Analytics - Advert
## Awareness and popularity
Wilson and Advert increase 2 important stats: awareness and popularity. These 2 stats affect initial demand and maximum sellable number of product units. I'll show formulas for them in later sections.
Awareness and popularity are capped at `Number.MAX_VALUE` (~1.7976931348623157E+308).
Raw values of those stats are crucial, but their ratio is also important. We want to have high ratio of popularity/awareness, check this [section](./optimal-selling-price-market-ta2.md) for formulas.
Popularity decreases by 0.0001 per cycle.
## Wilson Analytics
Wilson is a multiplier that is applied on Advert's benefits when we buy Advert, so it's not retroactive. Therefore, we need to buy it as soon as possible. However, there are cases that Wilson is too expensive and it does not bring much benefits. Round 1 and 2 are those cases.
Wilson has `priceMult` of 2, so its price is doubled every time we buy it. The exponentiation of Advert's cost function uses base of 1.06, so its price increases much slower.
## Advert
Advert is a special upgrade. It affects only the division that buys it.
Cost: use the formulas in this [section](./unlocks-upgrade-research.md) with `BasePrice` = 1e9 and `PriceMult` = 1.06.
Benefit:
$$AdvertMultiplier = WilsonUpgradeBenefit\ast ResearchAdvertisingMultiplier$$
$$Awareness = (Awareness + 3\ast AdvertMultiplier)\ast(1.005*AdvertMultiplier)$$
$$Popularity = (Popularity + AdvertMultiplier)\ast(1 + {Random(1,3)}\ast{0.005})\ast AdvertMultiplier$$
## Advice
Buying Advert without Wilson is a valid strategy in extremely low-budget situations like round 1 and 2.
Wilson becomes extremely important in big-budget situations. Wilson is usually good investment in late phases.
In round 3+, we usually improve the divisions continuously with relatively small budget (profit of a few cycles). In this case, we should buy Wilson as soon as we can afford it.
@@ -0,0 +1,81 @@
# Corporation
Corporation is an interesting feature of Bitburner. It's the most profitable feature in the game, and it's so overpowered that many BitNodes tend to apply a penalty modifier. However, it's extremely complex and opaque for newbies. There are too many mechanisms that are intertwined with each other, so it's very easy to make a mistake, and that mistake can cripple your corporation. This documentation explains all the mechanisms that you need to know to build a successful corporation.
The documentation is a bit long and intimidating at first glance, but you don't need to read all the sections below at once. I recommend that you read the first 4 sections. They are the most important sections for newbies. After that, you can read the following sections at your leisure.
## Contents
- [Basic gameplay and term](./corporation/basic-gameplay-and-term.md)
- Basic gameplay
- Term
- [FAQ](./corporation/faq.md)
- [Industry - Supply chain](./corporation/industry-supply-chain.md)
- Basic term
- Criterion
- Agriculture + Chemical + Tobacco
- Other product industries
- Conclusion
- [General advice](./corporation/general-advice.md)
- Round 1
- Round 2
- Round 3+
- [Unlocks - Upgrade - Research](./corporation/unlocks-upgrade-research.md)
- Unlocks
- Upgrade
- Research
- [Warehouse](./corporation/warehouse.md)
- [Boost material](./corporation/boost-material.md)
- Division production multiplier
- Optimizer
- Solution
- Lagrange multiplier method
- Proof
- Handle low storage space
- [Division raw production](./corporation/division-raw-production.md)
- Definition
- Formula
- [Office](./corporation/office.md)
- Basic information
- Upgrade
- Energy and morale
- Employee production by job
- Calculate employee's stat
- [Quality](./corporation/quality.md)
- Basic term
- Material
- Product
- [Smart Supply](./corporation/smart-supply.md)
- Logic
- Detect warehouse congestion
- [Wilson Analytics Advert](./corporation/wilson-analytics-advert.md)
- Awareness and popularity
- Wilson Analytics
- Advert
- Advice
- [Demand Competition](./corporation/demand-competition.md)
- Usage
- Material
- Product
- [Product](./corporation/product.md)
- Overview
- Formula
- Approximation value of product markup
- [Optimal selling price Market-TA2](./corporation/optimal-selling-price-market-ta2.md)
- Market price and markup limit
- Maximize sales volume
- Optimal selling price
- [Financial statement](./corporation/financial-statement.md)
- Total assets
- Valuation
- Investment offer
- Dividend
- Shares
- [Miscellany](./corporation/miscellany.md)
- Corporation's states
- Import and export
- Use mathematical library
- Ceres Solver
- Noodles trick
- "sudo.Assist" research
- Dummy division
@@ -0,0 +1,73 @@
# List of Factions and their Requirements
### Early Game Factions
| Faction Name | Requirements |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| CyberSec | \* Install a backdoor on the `CSEC` server |
| Tian Di Hui | \* \$1m<br />\* Hacking Level 50<br />\* Be in Chongqing, New Tokyo, or Ishima |
| Netburners | \* Hacking Level 80<br />\* Total Hacknet Levels of 100<br />\* Total Hacknet RAM of 8<br />\* Total Hacknet Cores of 4 |
| Shadows of Anarchy | \* Successfully infiltrate a company |
### City Factions
| Faction Name | Requirements | Cannot join if you are working for: |
| ------------ | -------------------------------- | ----------------------------------------------------------------------------- |
| Sector-12 | \* Be in Sector-12<br />\* \$15m | \* Chongqing<br />\* New Tokyo<br />\* Ishima<br />\* Volhaven |
| Chongqing | \* Be in Chongqing<br />\* \$20m | \* Sector-12<br />\* Aevum<br />\* Volhaven |
| New Tokyo | \* Be in New Tokyo<br />\* \$20m | \* Sector-12<br />\* Aevum<br />\* Volhaven |
| Ishima | \* Be in Ishima<br />\* \$30m | \* Sector-12<br />\* Aevum<br />\* Volhaven |
| Aevum | \* Be in Aevum<br />\* \$40m | \* Chongqing<br />\* New Tokyo<br />\* Ishima<br />\* Volhaven |
| Volhaven | \* Be in Volhaven<br />\* \$50m | \* Sector-12<br />\* Aevum<br />\* Chongqing<br />\* New Tokyo<br />\* Ishima |
### Hacking Groups
| Faction Name | Requirements |
| -------------- | ----------------------------------------------------------------------- |
| CyberSec | \* Install a backdoor on the `CSEC` server (Hacking Level 51+) |
| NiteSec | \* Install a backdoor on the `avmnite-02h` server (Hacking Level 202+) |
| The Black Hand | \* Install a backdoor on the `I.I.I.I` server (Hacking Level 340+) |
| BitRunners | \* Install a backdoor on the `run4theh111z` server (Hacking Level 505+) |
### Megacorporations
If you install a backdoor on a company's server, the required reputation of that company faction is reduced by 25%.
| Faction Name | Requirements |
| --------------------------- | ----------------------------------------------------------------------------------------------------- |
| ECorp | \* Have 400k reputation with the Corporation |
| MegaCorp | \* Have 400k reputation with the Corporation |
| KuaiGong International | \* Have 400k reputation with the Corporation |
| Four Sigma | \* Have 400k reputation with the Corporation |
| NWO | \* Have 400k reputation with the Corporation |
| Blade Industries | \* Have 400k reputation with the Corporation |
| OmniTek Incorporated | \* Have 400k reputation with the Corporation |
| Bachman & Associates | \* Have 400k reputation with the Corporation |
| Clarke Incorporated | \* Have 400k reputation with the Corporation |
| Fulcrum Secret Technologies | \* Have 400k reputation with the Corporation<br />\* Install a backdoor on the `fulcrumassets` server |
### Criminal Organizations
| Faction Name | Requirements | Cannot join if you are working for: |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
| Slum Snakes | \* All Combat Stats of 30<br />\* \$1m<br />\* -9 Karma | |
| Tetrads | \* Be in Chongqing, New Tokyo, or Ishima<br />\* All Combat Stats of 75<br />\* -18 Karma | |
| Silhouette | \* CTO, CFO, or CEO of a company<br />\* \$15m<br />\* -22 Karma | |
| Speakers for the Dead | \* Hacking Level 100<br />\* All Combat Stats of 300<br />\* 30 People Killed<br />\* -45 Karma | \* CIA<br />\* NSA |
| The Dark Army | \* Hacking Level 300<br />\* All Combat Stats of 300<br />\* Be in Chongqing<br />\* 5 People Killed<br />\* -45 Karma | \* CIA<br />\* NSA |
| The Syndicate | \* Hacking Level 200<br />\* All Combat Stats of 200<br />\* Be in Aevum or Sector-12<br />\* \$10m<br />\* -90 Karma | \* CIA<br />\* NSA |
### Lategame Factions
| Faction Name | Requirements |
| ------------ | ------------------------------------------------------------------------------------------------- |
| The Covenant | \* 20 Augmentations<br />\* \$75b<br />\* Hacking Level of 850<br />\* All Combat Stats of 850 |
| Illuminati | \* 30 Augmentations<br />\* \$150b<br />\* Hacking Level of 1500<br />\* All Combat Stats of 1200 |
| Daedalus | \* 30 Augmentations<br />\* \$100b<br />\* Hacking Level of 2500 OR All Combat Stats of 1500 |
### Endgame Factions
| Faction Name | Requirements |
| ------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Bladeburners | \* Be in BitNode 6 or 7 or have Source-File 6 or 7<br />\* Join Bladeburner Division<br />\* Have 25 Rank |
| Church of the Machine God | \* Be in BitNode 13 or have Source-File 13<br />\* Have not installed any augmentations in the current BitNode |
+35
View File
@@ -0,0 +1,35 @@
# Gangs
In the wake of crisis and war, Gang activity surged. Stronger than ever in a lawless world - Enhanced with fantastic technology, no longer held back by ethics and morals, 'free from the shadows'....
Seen by most of the population as nihilistic, murderous and vile, occasional rumors suggest Gangs sometimes involve themselves with vigilantism, hacktivism, perhaps even plotting against The Enders, seeking to destroy a world they cannot save.
## Starting and Recruiting
Outside of [BitNode-2](bitnodes.md) gangs require much more crime and heartbreak to create, but can still be a great help. Creating a Gang in other [BitNodes](bitnodes.md) will offer more [Augmentations](../basic/augmentations.md) than other [Factions](../basic/factions.md), but they will not be a way to destroy the [BitNode](bitnodes.md) alone.
After creating a gang, you will be able to start recruiting, adding members to your gang as you gain Respect. While in a BitNode, your gang and gang member stats will not reset if you install augmentations.
## Respect
Earned as your gang members complete tasks, Respect affects your gang's productivity, including your Faction Reputation (needed to buy augmentations from your Gang Faction), and the number of recruits you can have. An individual gang member's Respect is lost or reset if they Ascend, or are killed in a Territory Warfare clash.
## Ascending
When experienced enough, gang members are offered Ascension, a permanent boost to their stat multipliers at the cost of resetting their base stats and equipment to 0, and reducing your Gang Reputation by the same amount as that member had earned since they last Ascended.
## Equipping and Managing
Buying Equipment for a gang member will give them a stat boost until they Ascend or are killed, at which point most equipment will reset.
Augmentations you install on gang members (in the Gang Equipment subpage) do not reset when they Ascend.
Active gang members earn stats, respect and money based on their current stats, their equipment, and the effects of Ascending.
## Wanted, Territory and Clashes
Your gang's "Wanted Level" can make tasks much less productive, and is affected by the tasks assigned to gang members. "Ethical Hacking" or "Vigilante Justice" tasks can lower Wanted Level.
"Territory Warfare" is a special task that builds Power for your gang. If "Territory Clashes" are enabled [see the Territory subpage of your Gang page], members have a chance to win or lose territory by clashing with other gangs. The % of Territory you control affects most aspects of your gang productivity.
Note that gang members can die during clashes, even if your gang wins.
@@ -0,0 +1,13 @@
# Grafting
Grafting is an experimental process through which you can obtain the benefits of [Augmentations](../basic/augmentations.md), without needing to reboot your body.
Grafting can be done at VitaLife in New Tokyo, where you'll find a shady researcher with questionable connections.
From there, you can spend a sum of money to begin grafting [Augmentations](../basic/augmentations.md).
This will take some time.
When done, the [Augmentation](../basic/augmentations.md) will be applied to your character without needing to install.
Be warned, some who have tested grafting have reported an unidentified malware.
Dubbed `Entropy`, this virus seems to grow in potency as more [Augmentations](../basic/augmentations.md) are grafted, causing unpredictable affects to the victim.
Note that when grafting an [Augmentation](../basic/augmentations.md), cancelling will **not** save your progress, and the money spent will **not** be returned.
@@ -0,0 +1,17 @@
# Hacknet Servers
This is a very powerful upgrade to [Hacknet Nodes](../basic/hacknet_nodes.md). It is unlocked in BitNode 9.
Instead of producing money, Hacknet servers produce `hash`. This currency can be exchanged for a variety of upgrades that boost most other mechanics of the game.
We can run scripts on them, but it reduces the amount of `hash` produced.
There are 5 multipliers that affect them:
- `hacknet_node_money` affects the hash production rate.
- `hacknet_node_purchase_cost` affects the cost of purchasing a server.
- `hacknet_node_ram_cost` affects the cost of upgrading RAM.
- `hacknet_node_core_cost` affects the cost of upgrading core.
- `hacknet_node_level_cost` affects the cost of upgrading level.
There is no multiplier that affects the cost of upgrading cache.
@@ -0,0 +1,17 @@
# Intelligence
Intelligence is a stat that is unlocked by having [Source-File 5](sourcefiles.md) (i.e. Destroying [BitNode-5](bitnodes.md)).
Intelligence is unique because it is permanent and persistent.
It never gets reset back to 1.
However, gaining Intelligence experience is extremely slow.
It is a stat that gradually builds up as you continue to play the game.
Intelligence will boost your production for many actions in the game, including:
- [Hacking](../basic/hacking.md)
- [Infiltration](../basic/infiltration.md)
- [Crime](../basic/crimes.md) success rate
- [Bladeburner](bladeburners.md) actions
- [Reputation](../basic/reputation.md) gain for [Companies](../basic/companies.md) & [Factions](../basic/factions.md)
- [Augmentation](../basic/augmentations.md) [Grafting](grafting.md) speed
@@ -0,0 +1,27 @@
# How Scripts Work Offline
The scripts you write and execute in the BitVerse are real, working JavaScript.
For this reason, it is not possible for Bitburner scripts to run when
- the game is closed
- the browser tab is inactive (if playing Bitburner in a web browser)
- or your system is sleeping
all of which we call being "offline" for game purposes.
It is important to know that logic such as `if`/`else` statements and most functions such as `ns.purchaseHacknetNode()`, `ns.hack()`, and `ns.nuke()` will not work while the game is offline.
However, scripts WILL continue to generate money and hacking exp for you while offline.
This offline production is based on the average online production of all your hacking scripts since your last augmentation, as shown on your Active Scripts page.
`ns.grow()` and `ns.weaken()` methods are also applied when the game is offline, although at a slower rate.
This is done by having each script track the rate at which the `ns.grow()` and `ns.weaken()` commands are called while online,
then determining how many calls would have been made while offline, and their effect is applied.
Also, note that because of the way the JavaScript engine works, whenever you reload or re-open the game all of your Active Scripts will start again from the BEGINNING of their code. The game does not keep track of where exactly the execution of a script is when it saves/loads.
# Bonus Time
Because of the above details, some activities in Bitburner accumulate "Bonus Time" while the game is closed or in an inactive browser tab. For mechanics that have a Bonus Time effect, the rate of the associated activity or task is significantly increased.
For example, if a certain [Bladeburner](bladeburners.md) contract requires 15 seconds to complete under normal conditions, the same task will be finished instead in 3 seconds if the Bonus Time effect is 5x. The specific details and effects of Bonus Time vary by mechanic.
@@ -0,0 +1,85 @@
# Sleeves
When VitaLife unveiled their Persona Core technology that allowed people to digitize and transfer their consciousness into other vessels, human bodies became nothing more than 'sleeves' for the human consciousness.
This technology thus became known as "Sleeve technology".
Sleeve technology unlocks two different gameplay features:
- Duplicate Sleeves
- [Grafting](grafting.md)
Sleeve technology is unlocked in [BitNode-10](bitnodes.md).
## Duplicate Sleeves
Duplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied.
In other words, these Synthoids contain a perfect duplicate of your mind.
Duplicate Sleeves are essentially clones which you can use to perform work-type actions, such as working for a [Company](../basic/companies.md) / [Faction](../basic/factions.md) or committing a [Crime](../basic/crimes.md).
When sleeves perform these tasks, they will earn money, experience, and [Reputation](../basic/reputation.md).
Sleeves are their own individuals, which means they each have their own experience and stats.
When a sleeve earns experience, it earns experience for itself, the player's original consciousness, as well as all of the player's other sleeves.
Duplicate Sleeves are **not** reset when installing [Augmentations](../basic/augmentations.md), but they are reset when switching [BitNodes](bitnodes.md).
## Obtaining Duplicate Sleeves
There are two methods of obtaining Duplicate Sleeves:
- Destroy [BitNode-10](bitnodes.md).
Each completion gives you one additional Duplicate Sleeve.
- Purchase Duplicate Sleeves from The Covenant.
This is only available in [BitNode-10](bitnodes.md).
Sleeves purchased this way are **permanent** (they persist through [BitNodes](bitnodes.md)).
You can purchase up to 5 Duplicate Sleeves from The Covenant.
## Synchronization
Synchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves.
It is a numerical value between `1` and `100`, and it affects how much experience is earned when the sleeve is performing a task.
Synchronization can be increased by assigning sleeves to the `Synchronize` task.
## Sleeve Shock
Sleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body.
It is a numerical value between `0` and `100`, where `100` indicates full shock and `0` indicates no shock.
Shock affects the amount of experience earned by the sleeve.
Sleeve shock slowly decreases over time.
You can further increase the rate at which it decreases by assigning sleeves to the `Shock Recovery` task.
Let `X` be the sleeve's recovery ratio (calculated as `(100 - shock) / 100`), and `Y` be the sleeve's synchronization ratio (calculated as `synchronize / 100`).
When performing a task would give you `A` experience normally, the sleeve gains `A * X` experience instead.
The players original host consciousness earns a fraction of the experience the sleeve gained, namely `A * X * Y`.
Other sleeves also earn the experience. However, their own shock affects this gain.
Let `Z` be the receiving sleeve's recovery ratio. It earns `A * X * Y * Z` experience.
## Augmentations
You can purchase [Augmentations](../basic/augmentations.md) for your Duplicate Sleeves.
In order to do this, the sleeve's shock must be at `0`.
Any [Augmentation](../basic/augmentations.md) that is currently available to you through a faction is also available for your Duplicate Sleeves.
There are a few [Augmentations](../basic/augmentations.md), such as NeuroFlux Governor and [Bladeburner](bladeburners.md)-specific ones, that cannot be purchased for a Duplicate Sleeve.
When you purchase an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve, it is instantly installed.
When this happens, the sleeve's stats are instantly reset back to 0, similar to when you normally install [Augmentations](../basic/augmentations.md).
The cost of purchasing an [Augmentation](../basic/augmentations.md) for a Duplicate Sleeve is **not** affected by how many [Augmentations](../basic/augmentations.md) you have purchased for yourself, and vice versa.
## Memory
Sleeve memory dictates what a sleeve's synchronization will be when it is reset by switching [BitNodes](bitnodes.md).
For example, if a sleeve has a memory of `10`, then when you switch [BitNodes](bitnodes.md) its synchronization will initially be set to `10`, rather than 1.
Memory can only be increased by purchasing upgrades from The Covenant.
Just like the ability to purchase additional sleeves, this is only available in [BitNode-10](bitnodes.md).
Memory is a persistent stat, meaning it never gets reset back to `1`.
The maximum possible value for a sleeve's memory is `100`.
Buying memory has no instant affect on synchronization - memory affects only the starting synchronization upon entering a [BitNode](bitnodes.md).
@@ -0,0 +1,8 @@
# Source-Files
Source-Files are a type of persistent upgrade that is more powerful than [Augmentations](../basic/augmentations.md).
Source-Files are received by destroying a [Bitnode](bitnodes.md).
There are many different [BitNodes](bitnodes.md) in the game and each [BitNode](bitnodes.md) will grant a different Source-File when it is destroyed.
A Source-File can be upgraded by destroying its corresponding [BitNode](bitnodes.md) a second or third time (playing through that [BitNode](bitnodes.md) again).
It can be upgraded to a maximum of level 3, with the exception of Source-File 12, which has no hard limit.
@@ -0,0 +1,12 @@
# Stanek
Allison is a bit crazy.
But her special [Augmentation](../basic/augmentations.md) is very useful despite its ~~bugs~~ features.
The Gift consists of a grid of squares in which Tetris-like pieces called fragments can be placed.
Each fragment boost a different player multiplier.
However, the fragments are not very powerful by themselves.
To increase the power of a fragment, the `ns.stanek.charge()` function needs to be called.
More threads means more power.
There are also special fragments called booster fragments which increase the power of the fragment it touches.