mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-17 06:48:42 +02:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6141f2adf | ||
|
|
2b7f6381eb | ||
|
|
5789003d46 | ||
|
|
3a7ff7880d | ||
|
|
09b74a3868 | ||
|
|
28d1610bac | ||
|
|
1ce22e9788 | ||
|
|
28ef5df880 | ||
|
|
97d679bdac | ||
|
|
da1b8533e0 | ||
|
|
417671ecb8 | ||
|
|
a6436ca4b3 | ||
|
|
473217ef31 | ||
|
|
e957864c4b | ||
|
|
c6434e2297 | ||
|
|
a3c26caf2c | ||
|
|
5482848eeb | ||
|
|
902306530c | ||
|
|
b114fb9eed | ||
|
|
ecc63eb07e | ||
|
|
107b4e90e9 | ||
|
|
61ffed9b3a | ||
|
|
21c7f56d23 | ||
|
|
89fc22f28f | ||
|
|
544c38065e | ||
|
|
1ce0584b25 | ||
|
|
375cf453b3 | ||
|
|
4dd4f920c3 | ||
|
|
019f2d6a11 | ||
|
|
b46b6e62bc | ||
|
|
79b0f83b5f | ||
|
|
76f0f3d6d3 | ||
|
|
3b4cac5584 | ||
|
|
aee353a54e | ||
|
|
1dc4d01d64 | ||
|
|
99383eb1c7 | ||
|
|
7fc46649f9 | ||
|
|
34cc0441c2 | ||
|
|
f2baa04f45 | ||
|
|
8b6caeb68b | ||
|
|
997ae8c176 |
4
electron/package-lock.json
generated
4
electron/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "bitburner",
|
"name": "bitburner",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bitburner",
|
"name": "bitburner",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"electron-log": "^4.4.8",
|
"electron-log": "^4.4.8",
|
||||||
"electron-store": "^8.1.0",
|
"electron-store": "^8.1.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "bitburner",
|
"name": "bitburner",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"description": "A cyberpunk-themed programming incremental game",
|
"description": "A cyberpunk-themed programming incremental game",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"author": "Daniel Xie, Olivier Gagnon, et al.",
|
"author": "Daniel Xie, Olivier Gagnon, et al.",
|
||||||
|
|||||||
@@ -10,12 +10,13 @@ module.exports = {
|
|||||||
moduleNameMapper: {
|
moduleNameMapper: {
|
||||||
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
|
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
|
||||||
"<rootDir>/test/__mocks__/fileMock.js",
|
"<rootDir>/test/__mocks__/fileMock.js",
|
||||||
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
|
"\\.(css|less)$": "<rootDir>/test/__mocks__/NullMock.js",
|
||||||
"\\!!raw-loader!.*$": "<rootDir>/test/__mocks__/rawLoader.js",
|
"\\!!raw-loader!.*$": "<rootDir>/test/__mocks__/NullMock.js",
|
||||||
"@player": "<rootDir>/src/Player",
|
"@player": "<rootDir>/src/Player",
|
||||||
"@enums": "<rootDir>/src/Enums",
|
"@enums": "<rootDir>/src/Enums",
|
||||||
"@nsdefs": "<rootDir>/src/ScriptEditor/NetscriptDefinitions",
|
"@nsdefs": "<rootDir>/src/ScriptEditor/NetscriptDefinitions",
|
||||||
"^monaco-editor$": "<rootDir>/test/__mocks__/monacoMock.js",
|
"^monaco-editor$": "<rootDir>/test/__mocks__/NullMock.js",
|
||||||
"^monaco-vim$": "<rootDir>/test/__mocks__/monacoMock.js",
|
"^monaco-vim$": "<rootDir>/test/__mocks__/NullMock.js",
|
||||||
|
"/utils/Protections$": "<rootDir>/test/__mocks__/NullMock.js",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
21
markdown/bitburner.backdoorrequirement.md
Normal file
21
markdown/bitburner.backdoorrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BackdoorRequirement](./bitburner.backdoorrequirement.md)
|
||||||
|
|
||||||
|
## BackdoorRequirement interface
|
||||||
|
|
||||||
|
Player must have installed a backdoor on this server.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface BackdoorRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [server](./bitburner.backdoorrequirement.server.md) | | string | |
|
||||||
|
| [type](./bitburner.backdoorrequirement.type.md) | | "backdoorInstalled" | |
|
||||||
|
|
||||||
11
markdown/bitburner.backdoorrequirement.server.md
Normal file
11
markdown/bitburner.backdoorrequirement.server.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BackdoorRequirement](./bitburner.backdoorrequirement.md) > [server](./bitburner.backdoorrequirement.server.md)
|
||||||
|
|
||||||
|
## BackdoorRequirement.server property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
server: string;
|
||||||
|
```
|
||||||
11
markdown/bitburner.backdoorrequirement.type.md
Normal file
11
markdown/bitburner.backdoorrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BackdoorRequirement](./bitburner.backdoorrequirement.md) > [type](./bitburner.backdoorrequirement.type.md)
|
||||||
|
|
||||||
|
## BackdoorRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "backdoorInstalled";
|
||||||
|
```
|
||||||
11
markdown/bitburner.bitnoderequirement.bitnoden.md
Normal file
11
markdown/bitburner.bitnoderequirement.bitnoden.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BitNodeRequirement](./bitburner.bitnoderequirement.md) > [bitNodeN](./bitburner.bitnoderequirement.bitnoden.md)
|
||||||
|
|
||||||
|
## BitNodeRequirement.bitNodeN property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
bitNodeN: number;
|
||||||
|
```
|
||||||
21
markdown/bitburner.bitnoderequirement.md
Normal file
21
markdown/bitburner.bitnoderequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BitNodeRequirement](./bitburner.bitnoderequirement.md)
|
||||||
|
|
||||||
|
## BitNodeRequirement interface
|
||||||
|
|
||||||
|
Player must be located in this BitNode.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface BitNodeRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [bitNodeN](./bitburner.bitnoderequirement.bitnoden.md) | | number | |
|
||||||
|
| [type](./bitburner.bitnoderequirement.type.md) | | "bitNodeN" | |
|
||||||
|
|
||||||
11
markdown/bitburner.bitnoderequirement.type.md
Normal file
11
markdown/bitburner.bitnoderequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BitNodeRequirement](./bitburner.bitnoderequirement.md) > [type](./bitburner.bitnoderequirement.type.md)
|
||||||
|
|
||||||
|
## BitNodeRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "bitNodeN";
|
||||||
|
```
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md) > [bladeburnerRank](./bitburner.bladeburnerrankrequirement.bladeburnerrank.md)
|
||||||
|
|
||||||
|
## BladeburnerRankRequirement.bladeburnerRank property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
bladeburnerRank: number;
|
||||||
|
```
|
||||||
21
markdown/bitburner.bladeburnerrankrequirement.md
Normal file
21
markdown/bitburner.bladeburnerrankrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md)
|
||||||
|
|
||||||
|
## BladeburnerRankRequirement interface
|
||||||
|
|
||||||
|
Player must have at least this rank in the Bladeburner Division.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface BladeburnerRankRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [bladeburnerRank](./bitburner.bladeburnerrankrequirement.bladeburnerrank.md) | | number | |
|
||||||
|
| [type](./bitburner.bladeburnerrankrequirement.type.md) | | "bladeburnerRank" | |
|
||||||
|
|
||||||
11
markdown/bitburner.bladeburnerrankrequirement.type.md
Normal file
11
markdown/bitburner.bladeburnerrankrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md) > [type](./bitburner.bladeburnerrankrequirement.type.md)
|
||||||
|
|
||||||
|
## BladeburnerRankRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "bladeburnerRank";
|
||||||
|
```
|
||||||
11
markdown/bitburner.cityrequirement.city.md
Normal file
11
markdown/bitburner.cityrequirement.city.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CityRequirement](./bitburner.cityrequirement.md) > [city](./bitburner.cityrequirement.city.md)
|
||||||
|
|
||||||
|
## CityRequirement.city property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
city: CityName;
|
||||||
|
```
|
||||||
21
markdown/bitburner.cityrequirement.md
Normal file
21
markdown/bitburner.cityrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CityRequirement](./bitburner.cityrequirement.md)
|
||||||
|
|
||||||
|
## CityRequirement interface
|
||||||
|
|
||||||
|
Player must be located in this city.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface CityRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [city](./bitburner.cityrequirement.city.md) | | [CityName](./bitburner.cityname.md) | |
|
||||||
|
| [type](./bitburner.cityrequirement.type.md) | | "city" | |
|
||||||
|
|
||||||
11
markdown/bitburner.cityrequirement.type.md
Normal file
11
markdown/bitburner.cityrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CityRequirement](./bitburner.cityrequirement.md) > [type](./bitburner.cityrequirement.type.md)
|
||||||
|
|
||||||
|
## CityRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "city";
|
||||||
|
```
|
||||||
11
markdown/bitburner.companyreputationrequirement.company.md
Normal file
11
markdown/bitburner.companyreputationrequirement.company.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) > [company](./bitburner.companyreputationrequirement.company.md)
|
||||||
|
|
||||||
|
## CompanyReputationRequirement.company property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
company: CompanyName;
|
||||||
|
```
|
||||||
22
markdown/bitburner.companyreputationrequirement.md
Normal file
22
markdown/bitburner.companyreputationrequirement.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md)
|
||||||
|
|
||||||
|
## CompanyReputationRequirement interface
|
||||||
|
|
||||||
|
Player must have at least this much reputation with this company.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface CompanyReputationRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [company](./bitburner.companyreputationrequirement.company.md) | | [CompanyName](./bitburner.companyname.md) | |
|
||||||
|
| [reputation](./bitburner.companyreputationrequirement.reputation.md) | | number | |
|
||||||
|
| [type](./bitburner.companyreputationrequirement.type.md) | | "companyReputation" | |
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) > [reputation](./bitburner.companyreputationrequirement.reputation.md)
|
||||||
|
|
||||||
|
## CompanyReputationRequirement.reputation property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
reputation: number;
|
||||||
|
```
|
||||||
11
markdown/bitburner.companyreputationrequirement.type.md
Normal file
11
markdown/bitburner.companyreputationrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) > [type](./bitburner.companyreputationrequirement.type.md)
|
||||||
|
|
||||||
|
## CompanyReputationRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "companyReputation";
|
||||||
|
```
|
||||||
11
markdown/bitburner.employedbyrequirement.company.md
Normal file
11
markdown/bitburner.employedbyrequirement.company.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [EmployedByRequirement](./bitburner.employedbyrequirement.md) > [company](./bitburner.employedbyrequirement.company.md)
|
||||||
|
|
||||||
|
## EmployedByRequirement.company property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
company: CompanyName;
|
||||||
|
```
|
||||||
21
markdown/bitburner.employedbyrequirement.md
Normal file
21
markdown/bitburner.employedbyrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [EmployedByRequirement](./bitburner.employedbyrequirement.md)
|
||||||
|
|
||||||
|
## EmployedByRequirement interface
|
||||||
|
|
||||||
|
Player must be working for this company.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface EmployedByRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [company](./bitburner.employedbyrequirement.company.md) | | [CompanyName](./bitburner.companyname.md) | |
|
||||||
|
| [type](./bitburner.employedbyrequirement.type.md) | | "employedBy" | |
|
||||||
|
|
||||||
11
markdown/bitburner.employedbyrequirement.type.md
Normal file
11
markdown/bitburner.employedbyrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [EmployedByRequirement](./bitburner.employedbyrequirement.md) > [type](./bitburner.employedbyrequirement.type.md)
|
||||||
|
|
||||||
|
## EmployedByRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "employedBy";
|
||||||
|
```
|
||||||
11
markdown/bitburner.everyrequirement.conditions.md
Normal file
11
markdown/bitburner.everyrequirement.conditions.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [EveryRequirement](./bitburner.everyrequirement.md) > [conditions](./bitburner.everyrequirement.conditions.md)
|
||||||
|
|
||||||
|
## EveryRequirement.conditions property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
conditions: PlayerRequirement[];
|
||||||
|
```
|
||||||
21
markdown/bitburner.everyrequirement.md
Normal file
21
markdown/bitburner.everyrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [EveryRequirement](./bitburner.everyrequirement.md)
|
||||||
|
|
||||||
|
## EveryRequirement interface
|
||||||
|
|
||||||
|
All sub-conditions must be satisfied.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface EveryRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [conditions](./bitburner.everyrequirement.conditions.md) | | [PlayerRequirement](./bitburner.playerrequirement.md)<!-- -->\[\] | |
|
||||||
|
| [type](./bitburner.everyrequirement.type.md) | | "everyCondition" | |
|
||||||
|
|
||||||
11
markdown/bitburner.everyrequirement.type.md
Normal file
11
markdown/bitburner.everyrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [EveryRequirement](./bitburner.everyrequirement.md) > [type](./bitburner.everyrequirement.type.md)
|
||||||
|
|
||||||
|
## EveryRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "everyCondition";
|
||||||
|
```
|
||||||
11
markdown/bitburner.filerequirement.file.md
Normal file
11
markdown/bitburner.filerequirement.file.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [FileRequirement](./bitburner.filerequirement.md) > [file](./bitburner.filerequirement.file.md)
|
||||||
|
|
||||||
|
## FileRequirement.file property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
file: string;
|
||||||
|
```
|
||||||
21
markdown/bitburner.filerequirement.md
Normal file
21
markdown/bitburner.filerequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [FileRequirement](./bitburner.filerequirement.md)
|
||||||
|
|
||||||
|
## FileRequirement interface
|
||||||
|
|
||||||
|
Player must have a specific Literature or Message file on their home computer.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface FileRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [file](./bitburner.filerequirement.file.md) | | string | |
|
||||||
|
| [type](./bitburner.filerequirement.type.md) | | "file" | |
|
||||||
|
|
||||||
11
markdown/bitburner.filerequirement.type.md
Normal file
11
markdown/bitburner.filerequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [FileRequirement](./bitburner.filerequirement.md) > [type](./bitburner.filerequirement.type.md)
|
||||||
|
|
||||||
|
## FileRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "file";
|
||||||
|
```
|
||||||
@@ -23,5 +23,5 @@ growTime(server: Server, player: Person): number;
|
|||||||
|
|
||||||
number
|
number
|
||||||
|
|
||||||
The calculated grow time.
|
The calculated grow time, in milliseconds.
|
||||||
|
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ hackTime(server: Server, player: Person): number;
|
|||||||
|
|
||||||
number
|
number
|
||||||
|
|
||||||
The calculated hack time.
|
The calculated hack time, in milliseconds.
|
||||||
|
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ weakenTime(server: Server, player: Person): number;
|
|||||||
|
|
||||||
number
|
number
|
||||||
|
|
||||||
The calculated weaken time.
|
The calculated weaken time, in milliseconds.
|
||||||
|
|
||||||
|
|||||||
11
markdown/bitburner.hacknetcoresrequirement.hacknetcores.md
Normal file
11
markdown/bitburner.hacknetcoresrequirement.hacknetcores.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md) > [hacknetCores](./bitburner.hacknetcoresrequirement.hacknetcores.md)
|
||||||
|
|
||||||
|
## HacknetCoresRequirement.hacknetCores property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
hacknetCores: number;
|
||||||
|
```
|
||||||
21
markdown/bitburner.hacknetcoresrequirement.md
Normal file
21
markdown/bitburner.hacknetcoresrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md)
|
||||||
|
|
||||||
|
## HacknetCoresRequirement interface
|
||||||
|
|
||||||
|
Player's Hacknet devices must have at least this many total cores.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface HacknetCoresRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [hacknetCores](./bitburner.hacknetcoresrequirement.hacknetcores.md) | | number | |
|
||||||
|
| [type](./bitburner.hacknetcoresrequirement.type.md) | | "hacknetCores" | |
|
||||||
|
|
||||||
11
markdown/bitburner.hacknetcoresrequirement.type.md
Normal file
11
markdown/bitburner.hacknetcoresrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md) > [type](./bitburner.hacknetcoresrequirement.type.md)
|
||||||
|
|
||||||
|
## HacknetCoresRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "hacknetCores";
|
||||||
|
```
|
||||||
11
markdown/bitburner.hacknetlevelsrequirement.hacknetlevels.md
Normal file
11
markdown/bitburner.hacknetlevelsrequirement.hacknetlevels.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md) > [hacknetLevels](./bitburner.hacknetlevelsrequirement.hacknetlevels.md)
|
||||||
|
|
||||||
|
## HacknetLevelsRequirement.hacknetLevels property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
hacknetLevels: number;
|
||||||
|
```
|
||||||
21
markdown/bitburner.hacknetlevelsrequirement.md
Normal file
21
markdown/bitburner.hacknetlevelsrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md)
|
||||||
|
|
||||||
|
## HacknetLevelsRequirement interface
|
||||||
|
|
||||||
|
Player's Hacknet devices must have at least this many total levels.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface HacknetLevelsRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [hacknetLevels](./bitburner.hacknetlevelsrequirement.hacknetlevels.md) | | number | |
|
||||||
|
| [type](./bitburner.hacknetlevelsrequirement.type.md) | | "hacknetLevels" | |
|
||||||
|
|
||||||
11
markdown/bitburner.hacknetlevelsrequirement.type.md
Normal file
11
markdown/bitburner.hacknetlevelsrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md) > [type](./bitburner.hacknetlevelsrequirement.type.md)
|
||||||
|
|
||||||
|
## HacknetLevelsRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "hacknetLevels";
|
||||||
|
```
|
||||||
11
markdown/bitburner.hacknetramrequirement.hacknetram.md
Normal file
11
markdown/bitburner.hacknetramrequirement.hacknetram.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md) > [hacknetRAM](./bitburner.hacknetramrequirement.hacknetram.md)
|
||||||
|
|
||||||
|
## HacknetRAMRequirement.hacknetRAM property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
hacknetRAM: number;
|
||||||
|
```
|
||||||
21
markdown/bitburner.hacknetramrequirement.md
Normal file
21
markdown/bitburner.hacknetramrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md)
|
||||||
|
|
||||||
|
## HacknetRAMRequirement interface
|
||||||
|
|
||||||
|
Player's Hacknet devices must have at least this much total RAM.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface HacknetRAMRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [hacknetRAM](./bitburner.hacknetramrequirement.hacknetram.md) | | number | |
|
||||||
|
| [type](./bitburner.hacknetramrequirement.type.md) | | "hacknetRAM" | |
|
||||||
|
|
||||||
11
markdown/bitburner.hacknetramrequirement.type.md
Normal file
11
markdown/bitburner.hacknetramrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md) > [type](./bitburner.hacknetramrequirement.type.md)
|
||||||
|
|
||||||
|
## HacknetRAMRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "hacknetRAM";
|
||||||
|
```
|
||||||
11
markdown/bitburner.jobtitlerequirement.jobtitle.md
Normal file
11
markdown/bitburner.jobtitlerequirement.jobtitle.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [JobTitleRequirement](./bitburner.jobtitlerequirement.md) > [jobTitle](./bitburner.jobtitlerequirement.jobtitle.md)
|
||||||
|
|
||||||
|
## JobTitleRequirement.jobTitle property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
jobTitle: JobName;
|
||||||
|
```
|
||||||
21
markdown/bitburner.jobtitlerequirement.md
Normal file
21
markdown/bitburner.jobtitlerequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [JobTitleRequirement](./bitburner.jobtitlerequirement.md)
|
||||||
|
|
||||||
|
## JobTitleRequirement interface
|
||||||
|
|
||||||
|
Player must have this job title at some company.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface JobTitleRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [jobTitle](./bitburner.jobtitlerequirement.jobtitle.md) | | [JobName](./bitburner.jobname.md) | |
|
||||||
|
| [type](./bitburner.jobtitlerequirement.type.md) | | "jobTitle" | |
|
||||||
|
|
||||||
11
markdown/bitburner.jobtitlerequirement.type.md
Normal file
11
markdown/bitburner.jobtitlerequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [JobTitleRequirement](./bitburner.jobtitlerequirement.md) > [type](./bitburner.jobtitlerequirement.type.md)
|
||||||
|
|
||||||
|
## JobTitleRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "jobTitle";
|
||||||
|
```
|
||||||
11
markdown/bitburner.karmarequiremennt.karma.md
Normal file
11
markdown/bitburner.karmarequiremennt.karma.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [KarmaRequiremennt](./bitburner.karmarequiremennt.md) > [karma](./bitburner.karmarequiremennt.karma.md)
|
||||||
|
|
||||||
|
## KarmaRequiremennt.karma property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
karma: number;
|
||||||
|
```
|
||||||
21
markdown/bitburner.karmarequiremennt.md
Normal file
21
markdown/bitburner.karmarequiremennt.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [KarmaRequiremennt](./bitburner.karmarequiremennt.md)
|
||||||
|
|
||||||
|
## KarmaRequiremennt interface
|
||||||
|
|
||||||
|
Player must have less than this much karma.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface KarmaRequiremennt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [karma](./bitburner.karmarequiremennt.karma.md) | | number | |
|
||||||
|
| [type](./bitburner.karmarequiremennt.type.md) | | "karma" | |
|
||||||
|
|
||||||
11
markdown/bitburner.karmarequiremennt.type.md
Normal file
11
markdown/bitburner.karmarequiremennt.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [KarmaRequiremennt](./bitburner.karmarequiremennt.md) > [type](./bitburner.karmarequiremennt.type.md)
|
||||||
|
|
||||||
|
## KarmaRequiremennt.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "karma";
|
||||||
|
```
|
||||||
11
markdown/bitburner.locationrequirement.location.md
Normal file
11
markdown/bitburner.locationrequirement.location.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [LocationRequirement](./bitburner.locationrequirement.md) > [location](./bitburner.locationrequirement.location.md)
|
||||||
|
|
||||||
|
## LocationRequirement.location property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
location: LocationName;
|
||||||
|
```
|
||||||
21
markdown/bitburner.locationrequirement.md
Normal file
21
markdown/bitburner.locationrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [LocationRequirement](./bitburner.locationrequirement.md)
|
||||||
|
|
||||||
|
## LocationRequirement interface
|
||||||
|
|
||||||
|
Player must be at this location within a city.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface LocationRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [location](./bitburner.locationrequirement.location.md) | | [LocationName](./bitburner.locationname.md) | |
|
||||||
|
| [type](./bitburner.locationrequirement.type.md) | | "location" | |
|
||||||
|
|
||||||
11
markdown/bitburner.locationrequirement.type.md
Normal file
11
markdown/bitburner.locationrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [LocationRequirement](./bitburner.locationrequirement.md) > [type](./bitburner.locationrequirement.type.md)
|
||||||
|
|
||||||
|
## LocationRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "location";
|
||||||
|
```
|
||||||
@@ -28,12 +28,17 @@
|
|||||||
| [ActiveFragment](./bitburner.activefragment.md) | |
|
| [ActiveFragment](./bitburner.activefragment.md) | |
|
||||||
| [AugmentPair](./bitburner.augmentpair.md) | Return value of [getSleevePurchasableAugs](./bitburner.sleeve.getsleevepurchasableaugs.md) |
|
| [AugmentPair](./bitburner.augmentpair.md) | Return value of [getSleevePurchasableAugs](./bitburner.sleeve.getsleevepurchasableaugs.md) |
|
||||||
| [AutocompleteData](./bitburner.autocompletedata.md) | Used for autocompletion |
|
| [AutocompleteData](./bitburner.autocompletedata.md) | Used for autocompletion |
|
||||||
|
| [BackdoorRequirement](./bitburner.backdoorrequirement.md) | Player must have installed a backdoor on this server. |
|
||||||
| [BasicHGWOptions](./bitburner.basichgwoptions.md) | Options to affect the behavior of [hack](./bitburner.ns.hack.md)<!-- -->, [grow](./bitburner.ns.grow.md)<!-- -->, and [weaken](./bitburner.ns.weaken.md)<!-- -->. |
|
| [BasicHGWOptions](./bitburner.basichgwoptions.md) | Options to affect the behavior of [hack](./bitburner.ns.hack.md)<!-- -->, [grow](./bitburner.ns.grow.md)<!-- -->, and [weaken](./bitburner.ns.weaken.md)<!-- -->. |
|
||||||
| [BitNodeMultipliers](./bitburner.bitnodemultipliers.md) | All multipliers affecting the difficulty of the current challenge. |
|
| [BitNodeMultipliers](./bitburner.bitnodemultipliers.md) | All multipliers affecting the difficulty of the current challenge. |
|
||||||
|
| [BitNodeRequirement](./bitburner.bitnoderequirement.md) | Player must be located in this BitNode. |
|
||||||
| [Bladeburner](./bitburner.bladeburner.md) | Bladeburner API |
|
| [Bladeburner](./bitburner.bladeburner.md) | Bladeburner API |
|
||||||
| [BladeburnerCurAction](./bitburner.bladeburnercuraction.md) | Bladeburner current action. |
|
| [BladeburnerCurAction](./bitburner.bladeburnercuraction.md) | Bladeburner current action. |
|
||||||
|
| [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md) | Player must have at least this rank in the Bladeburner Division. |
|
||||||
|
| [CityRequirement](./bitburner.cityrequirement.md) | Player must be located in this city. |
|
||||||
| [CodingContract](./bitburner.codingcontract.md) | Coding Contract API |
|
| [CodingContract](./bitburner.codingcontract.md) | Coding Contract API |
|
||||||
| [CompanyPositionInfo](./bitburner.companypositioninfo.md) | Company position requirements and salary. |
|
| [CompanyPositionInfo](./bitburner.companypositioninfo.md) | Company position requirements and salary. |
|
||||||
|
| [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) | Player must have at least this much reputation with this company. |
|
||||||
| [CorpConstants](./bitburner.corpconstants.md) | Corporation related constants |
|
| [CorpConstants](./bitburner.corpconstants.md) | Corporation related constants |
|
||||||
| [CorpIndustryData](./bitburner.corpindustrydata.md) | Data for an individual industry |
|
| [CorpIndustryData](./bitburner.corpindustrydata.md) | Data for an individual industry |
|
||||||
| [CorpMaterialConstantData](./bitburner.corpmaterialconstantdata.md) | Corporation material information |
|
| [CorpMaterialConstantData](./bitburner.corpmaterialconstantdata.md) | Corporation material information |
|
||||||
@@ -42,8 +47,11 @@
|
|||||||
| [CorpProductData](./bitburner.corpproductdata.md) | Product rating information |
|
| [CorpProductData](./bitburner.corpproductdata.md) | Product rating information |
|
||||||
| [CrimeStats](./bitburner.crimestats.md) | Data representing the internal values of a crime. |
|
| [CrimeStats](./bitburner.crimestats.md) | Data representing the internal values of a crime. |
|
||||||
| [Division](./bitburner.division.md) | Corporation division |
|
| [Division](./bitburner.division.md) | Corporation division |
|
||||||
|
| [EmployedByRequirement](./bitburner.employedbyrequirement.md) | Player must be working for this company. |
|
||||||
| [EquipmentStats](./bitburner.equipmentstats.md) | Object representing data representing a gang member equipment. |
|
| [EquipmentStats](./bitburner.equipmentstats.md) | Object representing data representing a gang member equipment. |
|
||||||
|
| [EveryRequirement](./bitburner.everyrequirement.md) | All sub-conditions must be satisfied. |
|
||||||
| [Export](./bitburner.export.md) | Export order for a material |
|
| [Export](./bitburner.export.md) | Export order for a material |
|
||||||
|
| [FileRequirement](./bitburner.filerequirement.md) | Player must have a specific Literature or Message file on their home computer. |
|
||||||
| [Formulas](./bitburner.formulas.md) | Formulas API |
|
| [Formulas](./bitburner.formulas.md) | Formulas API |
|
||||||
| [Fragment](./bitburner.fragment.md) | |
|
| [Fragment](./bitburner.fragment.md) | |
|
||||||
| [GameInfo](./bitburner.gameinfo.md) | Game Information |
|
| [GameInfo](./bitburner.gameinfo.md) | Game Information |
|
||||||
@@ -60,9 +68,12 @@
|
|||||||
| [HackingFormulas](./bitburner.hackingformulas.md) | Hacking formulas |
|
| [HackingFormulas](./bitburner.hackingformulas.md) | Hacking formulas |
|
||||||
| [HackingMultipliers](./bitburner.hackingmultipliers.md) | Hack related multipliers. |
|
| [HackingMultipliers](./bitburner.hackingmultipliers.md) | Hack related multipliers. |
|
||||||
| [Hacknet](./bitburner.hacknet.md) | Hacknet API |
|
| [Hacknet](./bitburner.hacknet.md) | Hacknet API |
|
||||||
|
| [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md) | Player's Hacknet devices must have at least this many total cores. |
|
||||||
|
| [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md) | Player's Hacknet devices must have at least this many total levels. |
|
||||||
| [HacknetMultipliers](./bitburner.hacknetmultipliers.md) | Hacknet related multipliers. |
|
| [HacknetMultipliers](./bitburner.hacknetmultipliers.md) | Hacknet related multipliers. |
|
||||||
| [HacknetNodeConstants](./bitburner.hacknetnodeconstants.md) | Hacknet node related constants |
|
| [HacknetNodeConstants](./bitburner.hacknetnodeconstants.md) | Hacknet node related constants |
|
||||||
| [HacknetNodesFormulas](./bitburner.hacknetnodesformulas.md) | Hacknet Node formulas |
|
| [HacknetNodesFormulas](./bitburner.hacknetnodesformulas.md) | Hacknet Node formulas |
|
||||||
|
| [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md) | Player's Hacknet devices must have at least this much total RAM. |
|
||||||
| [HacknetServerConstants](./bitburner.hacknetserverconstants.md) | Hacknet server related constants |
|
| [HacknetServerConstants](./bitburner.hacknetserverconstants.md) | Hacknet server related constants |
|
||||||
| [HacknetServersFormulas](./bitburner.hacknetserversformulas.md) | Hacknet Server formulas |
|
| [HacknetServersFormulas](./bitburner.hacknetserversformulas.md) | Hacknet Server formulas |
|
||||||
| [HP](./bitburner.hp.md) | |
|
| [HP](./bitburner.hp.md) | |
|
||||||
@@ -73,15 +84,23 @@
|
|||||||
| [InfiltrationReward](./bitburner.infiltrationreward.md) | |
|
| [InfiltrationReward](./bitburner.infiltrationreward.md) | |
|
||||||
| [InvestmentOffer](./bitburner.investmentoffer.md) | Corporation investment offer |
|
| [InvestmentOffer](./bitburner.investmentoffer.md) | Corporation investment offer |
|
||||||
| [IStyleSettings](./bitburner.istylesettings.md) | Interface Styles |
|
| [IStyleSettings](./bitburner.istylesettings.md) | Interface Styles |
|
||||||
|
| [JobTitleRequirement](./bitburner.jobtitlerequirement.md) | Player must have this job title at some company. |
|
||||||
|
| [KarmaRequiremennt](./bitburner.karmarequiremennt.md) | Player must have less than this much karma. |
|
||||||
|
| [LocationRequirement](./bitburner.locationrequirement.md) | Player must be at this location within a city. |
|
||||||
| [Material](./bitburner.material.md) | Material in a warehouse |
|
| [Material](./bitburner.material.md) | Material in a warehouse |
|
||||||
|
| [MoneyRequirement](./bitburner.moneyrequirement.md) | Player must have at least this much money. |
|
||||||
| [MoneySource](./bitburner.moneysource.md) | |
|
| [MoneySource](./bitburner.moneysource.md) | |
|
||||||
| [MoneySources](./bitburner.moneysources.md) | |
|
| [MoneySources](./bitburner.moneysources.md) | |
|
||||||
| [Multipliers](./bitburner.multipliers.md) | |
|
| [Multipliers](./bitburner.multipliers.md) | |
|
||||||
| [NetscriptPort](./bitburner.netscriptport.md) | Object representing a port. A port is a serialized queue. |
|
| [NetscriptPort](./bitburner.netscriptport.md) | Object representing a port. A port is a serialized queue. |
|
||||||
| [NodeStats](./bitburner.nodestats.md) | Object representing all the values related to a hacknet node. |
|
| [NodeStats](./bitburner.nodestats.md) | Object representing all the values related to a hacknet node. |
|
||||||
|
| [NotRequirement](./bitburner.notrequirement.md) | The sub-condition must not be satisfied. |
|
||||||
| [NS](./bitburner.ns.md) | Collection of all functions passed to scripts |
|
| [NS](./bitburner.ns.md) | Collection of all functions passed to scripts |
|
||||||
|
| [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md) | Player must have at least this many augmentations installed (if positive). Player must have no augmentations installed (if zero). |
|
||||||
|
| [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md) | Player must have completed this many infiltrations. |
|
||||||
| [Office](./bitburner.office.md) | Office for a division in a city. |
|
| [Office](./bitburner.office.md) | Office for a division in a city. |
|
||||||
| [OfficeAPI](./bitburner.officeapi.md) | Corporation Office API |
|
| [OfficeAPI](./bitburner.officeapi.md) | Corporation Office API |
|
||||||
|
| [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md) | Player must have killed at least this many people. |
|
||||||
| [Person](./bitburner.person.md) | |
|
| [Person](./bitburner.person.md) | |
|
||||||
| [Player](./bitburner.player.md) | |
|
| [Player](./bitburner.player.md) | |
|
||||||
| [ProcessInfo](./bitburner.processinfo.md) | A single process on a server. |
|
| [ProcessInfo](./bitburner.processinfo.md) | A single process on a server. |
|
||||||
@@ -94,11 +113,14 @@
|
|||||||
| [RunOptions](./bitburner.runoptions.md) | |
|
| [RunOptions](./bitburner.runoptions.md) | |
|
||||||
| [Server](./bitburner.server.md) | A server. Not all servers have all of these properties - optional properties are missing on certain servers. |
|
| [Server](./bitburner.server.md) | A server. Not all servers have all of these properties - optional properties are missing on certain servers. |
|
||||||
| [Singularity](./bitburner.singularity.md) | Singularity API |
|
| [Singularity](./bitburner.singularity.md) | Singularity API |
|
||||||
|
| [SkillRequirement](./bitburner.skillrequirement.md) | Player must have each listed skill at least this level. |
|
||||||
| [Skills](./bitburner.skills.md) | |
|
| [Skills](./bitburner.skills.md) | |
|
||||||
| [SkillsFormulas](./bitburner.skillsformulas.md) | Skills formulas |
|
| [SkillsFormulas](./bitburner.skillsformulas.md) | Skills formulas |
|
||||||
| [Sleeve](./bitburner.sleeve.md) | Sleeve API |
|
| [Sleeve](./bitburner.sleeve.md) | Sleeve API |
|
||||||
| [SleevePerson](./bitburner.sleeveperson.md) | |
|
| [SleevePerson](./bitburner.sleeveperson.md) | |
|
||||||
|
| [SomeRequirement](./bitburner.somerequirement.md) | At least one sub-condition must be satisfied. |
|
||||||
| [SourceFileLvl](./bitburner.sourcefilelvl.md) | |
|
| [SourceFileLvl](./bitburner.sourcefilelvl.md) | |
|
||||||
|
| [SourceFileRequirement](./bitburner.sourcefilerequirement.md) | Player must have this Source File. |
|
||||||
| [SpawnOptions](./bitburner.spawnoptions.md) | |
|
| [SpawnOptions](./bitburner.spawnoptions.md) | |
|
||||||
| [Stanek](./bitburner.stanek.md) | Stanek's Gift API. |
|
| [Stanek](./bitburner.stanek.md) | Stanek's Gift API. |
|
||||||
| [StockMarketConstants](./bitburner.stockmarketconstants.md) | Constants used for the stockmarket game mechanic. |
|
| [StockMarketConstants](./bitburner.stockmarketconstants.md) | Constants used for the stockmarket game mechanic. |
|
||||||
@@ -128,6 +150,7 @@
|
|||||||
| [CorpUpgradeName](./bitburner.corpupgradename.md) | |
|
| [CorpUpgradeName](./bitburner.corpupgradename.md) | |
|
||||||
| [FilenameOrPID](./bitburner.filenameorpid.md) | |
|
| [FilenameOrPID](./bitburner.filenameorpid.md) | |
|
||||||
| [NSEnums](./bitburner.nsenums.md) | |
|
| [NSEnums](./bitburner.nsenums.md) | |
|
||||||
|
| [PlayerRequirement](./bitburner.playerrequirement.md) | Structured interface to requirements for joining a faction or company. For fields with numerical value > 0, the player must have at least this value. For fields with numerical value <<!-- -->= 0, the player must have at most this value. For "not", the sub-condition must be failed instead of passed. For "someCondition", at least one sub-condition must be passed. |
|
||||||
| [PortData](./bitburner.portdata.md) | |
|
| [PortData](./bitburner.portdata.md) | |
|
||||||
| [ReactNode](./bitburner.reactnode.md) | <p>A stand-in for the real React.ReactNode. A [ReactElement](./bitburner.reactelement.md) is rendered dynamically with React. number and string are displayed directly. boolean, null, and undefined are ignored and not rendered. An array of ReactNodes will display all members of that array sequentially.</p><p>Use React.createElement to make the ReactElement type, see [creating an element without jsx](https://react.dev/reference/react/createElement#creating-an-element-without-jsx) from the official React documentation.</p> |
|
| [ReactNode](./bitburner.reactnode.md) | <p>A stand-in for the real React.ReactNode. A [ReactElement](./bitburner.reactelement.md) is rendered dynamically with React. number and string are displayed directly. boolean, null, and undefined are ignored and not rendered. An array of ReactNodes will display all members of that array sequentially.</p><p>Use React.createElement to make the ReactElement type, see [creating an element without jsx](https://react.dev/reference/react/createElement#creating-an-element-without-jsx) from the official React documentation.</p> |
|
||||||
| [ScriptArg](./bitburner.scriptarg.md) | |
|
| [ScriptArg](./bitburner.scriptarg.md) | |
|
||||||
|
|||||||
21
markdown/bitburner.moneyrequirement.md
Normal file
21
markdown/bitburner.moneyrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [MoneyRequirement](./bitburner.moneyrequirement.md)
|
||||||
|
|
||||||
|
## MoneyRequirement interface
|
||||||
|
|
||||||
|
Player must have at least this much money.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface MoneyRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [money](./bitburner.moneyrequirement.money.md) | | number | |
|
||||||
|
| [type](./bitburner.moneyrequirement.type.md) | | "money" | |
|
||||||
|
|
||||||
11
markdown/bitburner.moneyrequirement.money.md
Normal file
11
markdown/bitburner.moneyrequirement.money.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [MoneyRequirement](./bitburner.moneyrequirement.md) > [money](./bitburner.moneyrequirement.money.md)
|
||||||
|
|
||||||
|
## MoneyRequirement.money property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
money: number;
|
||||||
|
```
|
||||||
11
markdown/bitburner.moneyrequirement.type.md
Normal file
11
markdown/bitburner.moneyrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [MoneyRequirement](./bitburner.moneyrequirement.md) > [type](./bitburner.moneyrequirement.type.md)
|
||||||
|
|
||||||
|
## MoneyRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "money";
|
||||||
|
```
|
||||||
11
markdown/bitburner.notrequirement.condition.md
Normal file
11
markdown/bitburner.notrequirement.condition.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NotRequirement](./bitburner.notrequirement.md) > [condition](./bitburner.notrequirement.condition.md)
|
||||||
|
|
||||||
|
## NotRequirement.condition property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
condition: PlayerRequirement;
|
||||||
|
```
|
||||||
21
markdown/bitburner.notrequirement.md
Normal file
21
markdown/bitburner.notrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NotRequirement](./bitburner.notrequirement.md)
|
||||||
|
|
||||||
|
## NotRequirement interface
|
||||||
|
|
||||||
|
The sub-condition must not be satisfied.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface NotRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [condition](./bitburner.notrequirement.condition.md) | | [PlayerRequirement](./bitburner.playerrequirement.md) | |
|
||||||
|
| [type](./bitburner.notrequirement.type.md) | | "not" | |
|
||||||
|
|
||||||
11
markdown/bitburner.notrequirement.type.md
Normal file
11
markdown/bitburner.notrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NotRequirement](./bitburner.notrequirement.md) > [type](./bitburner.notrequirement.type.md)
|
||||||
|
|
||||||
|
## NotRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "not";
|
||||||
|
```
|
||||||
21
markdown/bitburner.numaugmentationsrequirement.md
Normal file
21
markdown/bitburner.numaugmentationsrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md)
|
||||||
|
|
||||||
|
## NumAugmentationsRequirement interface
|
||||||
|
|
||||||
|
Player must have at least this many augmentations installed (if positive). Player must have no augmentations installed (if zero).
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface NumAugmentationsRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [numAugmentations](./bitburner.numaugmentationsrequirement.numaugmentations.md) | | number | |
|
||||||
|
| [type](./bitburner.numaugmentationsrequirement.type.md) | | "numAugmentations" | |
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md) > [numAugmentations](./bitburner.numaugmentationsrequirement.numaugmentations.md)
|
||||||
|
|
||||||
|
## NumAugmentationsRequirement.numAugmentations property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
numAugmentations: number;
|
||||||
|
```
|
||||||
11
markdown/bitburner.numaugmentationsrequirement.type.md
Normal file
11
markdown/bitburner.numaugmentationsrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md) > [type](./bitburner.numaugmentationsrequirement.type.md)
|
||||||
|
|
||||||
|
## NumAugmentationsRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "numAugmentations";
|
||||||
|
```
|
||||||
21
markdown/bitburner.numinfiltrationsrequirement.md
Normal file
21
markdown/bitburner.numinfiltrationsrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md)
|
||||||
|
|
||||||
|
## NumInfiltrationsRequirement interface
|
||||||
|
|
||||||
|
Player must have completed this many infiltrations.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface NumInfiltrationsRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [numInfiltrations](./bitburner.numinfiltrationsrequirement.numinfiltrations.md) | | number | |
|
||||||
|
| [type](./bitburner.numinfiltrationsrequirement.type.md) | | "numInfiltrations" | |
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md) > [numInfiltrations](./bitburner.numinfiltrationsrequirement.numinfiltrations.md)
|
||||||
|
|
||||||
|
## NumInfiltrationsRequirement.numInfiltrations property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
numInfiltrations: number;
|
||||||
|
```
|
||||||
11
markdown/bitburner.numinfiltrationsrequirement.type.md
Normal file
11
markdown/bitburner.numinfiltrationsrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md) > [type](./bitburner.numinfiltrationsrequirement.type.md)
|
||||||
|
|
||||||
|
## NumInfiltrationsRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "numInfiltrations";
|
||||||
|
```
|
||||||
21
markdown/bitburner.peoplekilledrequirement.md
Normal file
21
markdown/bitburner.peoplekilledrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md)
|
||||||
|
|
||||||
|
## PeopleKilledRequirement interface
|
||||||
|
|
||||||
|
Player must have killed at least this many people.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface PeopleKilledRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [numPeopleKilled](./bitburner.peoplekilledrequirement.numpeoplekilled.md) | | number | |
|
||||||
|
| [type](./bitburner.peoplekilledrequirement.type.md) | | "numPeopleKilled" | |
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md) > [numPeopleKilled](./bitburner.peoplekilledrequirement.numpeoplekilled.md)
|
||||||
|
|
||||||
|
## PeopleKilledRequirement.numPeopleKilled property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
numPeopleKilled: number;
|
||||||
|
```
|
||||||
11
markdown/bitburner.peoplekilledrequirement.type.md
Normal file
11
markdown/bitburner.peoplekilledrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md) > [type](./bitburner.peoplekilledrequirement.type.md)
|
||||||
|
|
||||||
|
## PeopleKilledRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "numPeopleKilled";
|
||||||
|
```
|
||||||
37
markdown/bitburner.playerrequirement.md
Normal file
37
markdown/bitburner.playerrequirement.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [PlayerRequirement](./bitburner.playerrequirement.md)
|
||||||
|
|
||||||
|
## PlayerRequirement type
|
||||||
|
|
||||||
|
Structured interface to requirements for joining a faction or company. For fields with numerical value > 0, the player must have at least this value. For fields with numerical value <<!-- -->= 0, the player must have at most this value. For "not", the sub-condition must be failed instead of passed. For "someCondition", at least one sub-condition must be passed.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
export type PlayerRequirement =
|
||||||
|
| MoneyRequirement
|
||||||
|
| SkillRequirement
|
||||||
|
| KarmaRequiremennt
|
||||||
|
| PeopleKilledRequirement
|
||||||
|
| FileRequirement
|
||||||
|
| NumAugmentationsRequirement
|
||||||
|
| EmployedByRequirement
|
||||||
|
| CompanyReputationRequirement
|
||||||
|
| JobTitleRequirement
|
||||||
|
| CityRequirement
|
||||||
|
| LocationRequirement
|
||||||
|
| BackdoorRequirement
|
||||||
|
| HacknetRAMRequirement
|
||||||
|
| HacknetCoresRequirement
|
||||||
|
| HacknetLevelsRequirement
|
||||||
|
| BitNodeRequirement
|
||||||
|
| SourceFileRequirement
|
||||||
|
| BladeburnerRankRequirement
|
||||||
|
| NumInfiltrationsRequirement
|
||||||
|
| NotRequirement
|
||||||
|
| SomeRequirement
|
||||||
|
| EveryRequirement;
|
||||||
|
```
|
||||||
|
**References:** [MoneyRequirement](./bitburner.moneyrequirement.md)<!-- -->, [SkillRequirement](./bitburner.skillrequirement.md)<!-- -->, [KarmaRequiremennt](./bitburner.karmarequiremennt.md)<!-- -->, [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md)<!-- -->, [FileRequirement](./bitburner.filerequirement.md)<!-- -->, [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md)<!-- -->, [EmployedByRequirement](./bitburner.employedbyrequirement.md)<!-- -->, [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md)<!-- -->, [JobTitleRequirement](./bitburner.jobtitlerequirement.md)<!-- -->, [CityRequirement](./bitburner.cityrequirement.md)<!-- -->, [LocationRequirement](./bitburner.locationrequirement.md)<!-- -->, [BackdoorRequirement](./bitburner.backdoorrequirement.md)<!-- -->, [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md)<!-- -->, [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md)<!-- -->, [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md)<!-- -->, [BitNodeRequirement](./bitburner.bitnoderequirement.md)<!-- -->, [SourceFileRequirement](./bitburner.sourcefilerequirement.md)<!-- -->, [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md)<!-- -->, [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md)<!-- -->, [NotRequirement](./bitburner.notrequirement.md)<!-- -->, [SomeRequirement](./bitburner.somerequirement.md)<!-- -->, [EveryRequirement](./bitburner.everyrequirement.md)
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ Apply for a job at a company.
|
|||||||
**Signature:**
|
**Signature:**
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
applyToCompany(companyName: CompanyName | `${CompanyName}`, field: JobField | `${JobField}`): boolean;
|
applyToCompany(companyName: CompanyName | `${CompanyName}`, field: JobField | `${JobField}`): JobName | null;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
@@ -21,7 +21,7 @@ applyToCompany(companyName: CompanyName | `${CompanyName}`, field: JobField | `$
|
|||||||
|
|
||||||
**Returns:**
|
**Returns:**
|
||||||
|
|
||||||
boolean
|
[JobName](./bitburner.jobname.md) \| null
|
||||||
|
|
||||||
True if the player successfully get a job/promotion, and false otherwise.
|
True if the player successfully get a job/promotion, and false otherwise.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [Singularity](./bitburner.singularity.md) > [getFactionInviteRequirements](./bitburner.singularity.getfactioninviterequirements.md)
|
||||||
|
|
||||||
|
## Singularity.getFactionInviteRequirements() method
|
||||||
|
|
||||||
|
List conditions for being invited to a faction.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
getFactionInviteRequirements(faction: string): PlayerRequirement[];
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| faction | string | Name of the faction |
|
||||||
|
|
||||||
|
**Returns:**
|
||||||
|
|
||||||
|
[PlayerRequirement](./bitburner.playerrequirement.md)<!-- -->\[\]
|
||||||
|
|
||||||
|
Array of PlayerRequirement objects which must all be fulfilled to receive an invitation.
|
||||||
|
|
||||||
|
## Remarks
|
||||||
|
|
||||||
|
RAM cost: 3 GB \* 16/4/1
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
|
||||||
|
```js
|
||||||
|
ns.singularity.getFactionInviteRequirements("The Syndicate")
|
||||||
|
[
|
||||||
|
{ "type": "someCondition", "conditions": [
|
||||||
|
{ "type": "city", "city": "Aevum" },
|
||||||
|
{ "type": "city", "city": "Sector-12" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "type": "not", "condition": {
|
||||||
|
"type": "employedBy", "company": "Central Intelligence Agency"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ "type": "not", "condition": {
|
||||||
|
"type": "employedBy", "company": "National Security Agency"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ "type": "money", "money": 10000000 },
|
||||||
|
{ "type": "skills", "skills": { "hacking": 200 } },
|
||||||
|
{ "type": "skills", "skills": { "strength": 200, "defense": 200, "dexterity": 200, "agility": 200 } },
|
||||||
|
{ "type": "karma", "karma": -90 }
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
@@ -50,6 +50,7 @@ This API requires Source-File 4 to use. The RAM cost of all these functions is m
|
|||||||
| [getDarkwebPrograms()](./bitburner.singularity.getdarkwebprograms.md) | Get a list of programs offered on the dark web. |
|
| [getDarkwebPrograms()](./bitburner.singularity.getdarkwebprograms.md) | Get a list of programs offered on the dark web. |
|
||||||
| [getFactionFavor(faction)](./bitburner.singularity.getfactionfavor.md) | Get faction favor. |
|
| [getFactionFavor(faction)](./bitburner.singularity.getfactionfavor.md) | Get faction favor. |
|
||||||
| [getFactionFavorGain(faction)](./bitburner.singularity.getfactionfavorgain.md) | Get faction favor gain. |
|
| [getFactionFavorGain(faction)](./bitburner.singularity.getfactionfavorgain.md) | Get faction favor gain. |
|
||||||
|
| [getFactionInviteRequirements(faction)](./bitburner.singularity.getfactioninviterequirements.md) | List conditions for being invited to a faction. |
|
||||||
| [getFactionRep(faction)](./bitburner.singularity.getfactionrep.md) | Get faction reputation. |
|
| [getFactionRep(faction)](./bitburner.singularity.getfactionrep.md) | Get faction reputation. |
|
||||||
| [getOwnedAugmentations(purchased)](./bitburner.singularity.getownedaugmentations.md) | Get a list of owned augmentation. |
|
| [getOwnedAugmentations(purchased)](./bitburner.singularity.getownedaugmentations.md) | Get a list of owned augmentation. |
|
||||||
| [getOwnedSourceFiles()](./bitburner.singularity.getownedsourcefiles.md) | Get a list of acquired Source-Files. |
|
| [getOwnedSourceFiles()](./bitburner.singularity.getownedsourcefiles.md) | Get a list of acquired Source-Files. |
|
||||||
|
|||||||
21
markdown/bitburner.skillrequirement.md
Normal file
21
markdown/bitburner.skillrequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SkillRequirement](./bitburner.skillrequirement.md)
|
||||||
|
|
||||||
|
## SkillRequirement interface
|
||||||
|
|
||||||
|
Player must have each listed skill at least this level.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface SkillRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [skills](./bitburner.skillrequirement.skills.md) | | Partial<[Skills](./bitburner.skills.md)<!-- -->> | |
|
||||||
|
| [type](./bitburner.skillrequirement.type.md) | | "skills" | |
|
||||||
|
|
||||||
11
markdown/bitburner.skillrequirement.skills.md
Normal file
11
markdown/bitburner.skillrequirement.skills.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SkillRequirement](./bitburner.skillrequirement.md) > [skills](./bitburner.skillrequirement.skills.md)
|
||||||
|
|
||||||
|
## SkillRequirement.skills property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
skills: Partial<Skills>;
|
||||||
|
```
|
||||||
11
markdown/bitburner.skillrequirement.type.md
Normal file
11
markdown/bitburner.skillrequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SkillRequirement](./bitburner.skillrequirement.md) > [type](./bitburner.skillrequirement.type.md)
|
||||||
|
|
||||||
|
## SkillRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "skills";
|
||||||
|
```
|
||||||
@@ -15,5 +15,6 @@ type SleeveBladeburnerTask = {
|
|||||||
cyclesWorked: number;
|
cyclesWorked: number;
|
||||||
cyclesNeeded: number;
|
cyclesNeeded: number;
|
||||||
nextCompletion: Promise<void>;
|
nextCompletion: Promise<void>;
|
||||||
|
tasksCompleted: number;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ type SleeveCrimeTask = {
|
|||||||
crimeType: CrimeType | `${CrimeType}`;
|
crimeType: CrimeType | `${CrimeType}`;
|
||||||
cyclesWorked: number;
|
cyclesWorked: number;
|
||||||
cyclesNeeded: number;
|
cyclesNeeded: number;
|
||||||
|
tasksCompleted: number;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
**References:** [CrimeType](./bitburner.crimetype.md)
|
**References:** [CrimeType](./bitburner.crimetype.md)
|
||||||
|
|||||||
11
markdown/bitburner.somerequirement.conditions.md
Normal file
11
markdown/bitburner.somerequirement.conditions.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SomeRequirement](./bitburner.somerequirement.md) > [conditions](./bitburner.somerequirement.conditions.md)
|
||||||
|
|
||||||
|
## SomeRequirement.conditions property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
conditions: PlayerRequirement[];
|
||||||
|
```
|
||||||
21
markdown/bitburner.somerequirement.md
Normal file
21
markdown/bitburner.somerequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SomeRequirement](./bitburner.somerequirement.md)
|
||||||
|
|
||||||
|
## SomeRequirement interface
|
||||||
|
|
||||||
|
At least one sub-condition must be satisfied.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface SomeRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [conditions](./bitburner.somerequirement.conditions.md) | | [PlayerRequirement](./bitburner.playerrequirement.md)<!-- -->\[\] | |
|
||||||
|
| [type](./bitburner.somerequirement.type.md) | | "someCondition" | |
|
||||||
|
|
||||||
11
markdown/bitburner.somerequirement.type.md
Normal file
11
markdown/bitburner.somerequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SomeRequirement](./bitburner.somerequirement.md) > [type](./bitburner.somerequirement.type.md)
|
||||||
|
|
||||||
|
## SomeRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "someCondition";
|
||||||
|
```
|
||||||
21
markdown/bitburner.sourcefilerequirement.md
Normal file
21
markdown/bitburner.sourcefilerequirement.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SourceFileRequirement](./bitburner.sourcefilerequirement.md)
|
||||||
|
|
||||||
|
## SourceFileRequirement interface
|
||||||
|
|
||||||
|
Player must have this Source File.
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface SourceFileRequirement
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Modifiers | Type | Description |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| [sourceFile](./bitburner.sourcefilerequirement.sourcefile.md) | | number | |
|
||||||
|
| [type](./bitburner.sourcefilerequirement.type.md) | | "sourceFile" | |
|
||||||
|
|
||||||
11
markdown/bitburner.sourcefilerequirement.sourcefile.md
Normal file
11
markdown/bitburner.sourcefilerequirement.sourcefile.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SourceFileRequirement](./bitburner.sourcefilerequirement.md) > [sourceFile](./bitburner.sourcefilerequirement.sourcefile.md)
|
||||||
|
|
||||||
|
## SourceFileRequirement.sourceFile property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
sourceFile: number;
|
||||||
|
```
|
||||||
11
markdown/bitburner.sourcefilerequirement.type.md
Normal file
11
markdown/bitburner.sourcefilerequirement.type.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [SourceFileRequirement](./bitburner.sourcefilerequirement.md) > [type](./bitburner.sourcefilerequirement.type.md)
|
||||||
|
|
||||||
|
## SourceFileRequirement.type property
|
||||||
|
|
||||||
|
**Signature:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type: "sourceFile";
|
||||||
|
```
|
||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "bitburner",
|
"name": "bitburner",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bitburner",
|
"name": "bitburner",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "SEE LICENSE IN license.txt",
|
"license": "SEE LICENSE IN license.txt",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "bitburner",
|
"name": "bitburner",
|
||||||
"license": "SEE LICENSE IN license.txt",
|
"license": "SEE LICENSE IN license.txt",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"main": "electron-main.js",
|
"main": "electron-main.js",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Daniel Xie, Olivier Gagnon, et al."
|
"name": "Daniel Xie, Olivier Gagnon, et al."
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ export function initBitNodes() {
|
|||||||
);
|
);
|
||||||
BitNodes.BitNode3 = new BitNode(
|
BitNodes.BitNode3 = new BitNode(
|
||||||
3,
|
3,
|
||||||
0,
|
2,
|
||||||
"Corporatocracy",
|
"Corporatocracy",
|
||||||
"The Price of Civilization",
|
"The Price of Civilization",
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import Typography from "@mui/material/Typography";
|
|||||||
import Tooltip from "@mui/material/Tooltip";
|
import Tooltip from "@mui/material/Tooltip";
|
||||||
import { Settings } from "../../Settings/Settings";
|
import { Settings } from "../../Settings/Settings";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
|
import { CompletedProgramName } from "@enums";
|
||||||
|
|
||||||
const useStyles = makeStyles(() =>
|
const useStyles = makeStyles(() =>
|
||||||
createStyles({
|
createStyles({
|
||||||
@@ -121,33 +122,52 @@ export function BitverseRoot(props: IProps): React.ReactElement {
|
|||||||
const [destroySequence, setDestroySequence] = useState(!props.quick);
|
const [destroySequence, setDestroySequence] = useState(!props.quick);
|
||||||
|
|
||||||
if (destroySequence) {
|
if (destroySequence) {
|
||||||
return (
|
let cinematicLines;
|
||||||
<CinematicText
|
if (props.flume) {
|
||||||
lines={[
|
cinematicLines = [
|
||||||
"[ERROR] SEMPOOL INVALID",
|
`Running ${CompletedProgramName.bitFlume}...`,
|
||||||
"[ERROR] Segmentation Fault",
|
"...........",
|
||||||
"[ERROR] SIGKILL RECVD",
|
"...........",
|
||||||
"Dumping core...",
|
"counter dq 0x0",
|
||||||
"0000 000016FA 174FEE40 29AC8239 384FEA88",
|
"mov [counter], EXC",
|
||||||
"0010 745F696E 2BBBE394 390E3940 248BEC23",
|
"dec [counter]",
|
||||||
"0020 7124696B 0000FF69 74652E6F FFFF1111",
|
"mov EXC, [counter]",
|
||||||
"----------------------------------------",
|
"...........",
|
||||||
"Failsafe initiated...",
|
"...........",
|
||||||
`Restarting BitNode-${destroyed}...`,
|
`[WARN] BitNode-${destroyed} assertion error:`,
|
||||||
"...........",
|
"Expected inputs to be strictly equal:",
|
||||||
"...........",
|
"<Number of incoming connections>, <Number of outgoing connections>",
|
||||||
"[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE",
|
"Running full scan...",
|
||||||
"..............................................",
|
"..............................................",
|
||||||
"..............................................",
|
"..............................................",
|
||||||
"..............................................",
|
"Hanging connection located, disconnecting...",
|
||||||
"..............................................",
|
"..............................................",
|
||||||
"..............................................",
|
"..............................................",
|
||||||
"..............................................",
|
];
|
||||||
]}
|
} else {
|
||||||
onDone={() => setDestroySequence(false)}
|
cinematicLines = [
|
||||||
auto={true}
|
"[ERROR] SEMPOOL INVALID",
|
||||||
/>
|
"[ERROR] Segmentation Fault",
|
||||||
);
|
"[ERROR] SIGKILL RECVD",
|
||||||
|
"Dumping core...",
|
||||||
|
"0000 000016FA 174FEE40 29AC8239 384FEA88",
|
||||||
|
"0010 745F696E 2BBBE394 390E3940 248BEC23",
|
||||||
|
"0020 7124696B 0000FF69 74652E6F FFFF1111",
|
||||||
|
"----------------------------------------",
|
||||||
|
"Failsafe initiated...",
|
||||||
|
`Restarting BitNode-${destroyed}...`,
|
||||||
|
"...........",
|
||||||
|
"...........",
|
||||||
|
"[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE",
|
||||||
|
"..............................................",
|
||||||
|
"..............................................",
|
||||||
|
"..............................................",
|
||||||
|
"..............................................",
|
||||||
|
"..............................................",
|
||||||
|
"..............................................",
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return <CinematicText lines={cinematicLines} onDone={() => setDestroySequence(false)} auto={true} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
const nextSourceFileLvl = (n: number): number => {
|
const nextSourceFileLvl = (n: number): number => {
|
||||||
|
|||||||
@@ -1,49 +1,52 @@
|
|||||||
|
import type { Action } from "../Action";
|
||||||
|
import type { Bladeburner } from "../Bladeburner";
|
||||||
|
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { dialogBoxCreate } from "../../ui/React/DialogBox";
|
import { dialogBoxCreate } from "../../ui/React/DialogBox";
|
||||||
import { Modal } from "../../ui/React/Modal";
|
import { Modal } from "../../ui/React/Modal";
|
||||||
import { Action } from "../Action";
|
import { Button, TextField, Typography } from "@mui/material";
|
||||||
import { Bladeburner } from "../Bladeburner";
|
|
||||||
import Typography from "@mui/material/Typography";
|
|
||||||
import Button from "@mui/material/Button";
|
|
||||||
import TextField from "@mui/material/TextField";
|
|
||||||
|
|
||||||
interface IProps {
|
interface TeamSizeModalProps {
|
||||||
bladeburner: Bladeburner;
|
bladeburner: Bladeburner;
|
||||||
action: Action;
|
action: Action;
|
||||||
open: boolean;
|
open: boolean;
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function TeamSizeModal(props: IProps): React.ReactElement {
|
export function TeamSizeModal({ bladeburner, action, open, onClose }: TeamSizeModalProps): React.ReactElement {
|
||||||
const [teamSize, setTeamSize] = useState<number | undefined>();
|
const [teamSize, setTeamSize] = useState<number | undefined>();
|
||||||
|
|
||||||
function confirmTeamSize(): void {
|
function confirmTeamSize(event: React.FormEvent): void {
|
||||||
|
// Prevent reloading page when submitting form
|
||||||
|
event.preventDefault();
|
||||||
if (teamSize === undefined) return;
|
if (teamSize === undefined) return;
|
||||||
const num = Math.round(teamSize);
|
const num = Math.round(teamSize);
|
||||||
if (isNaN(num) || num < 0) {
|
if (isNaN(num) || num < 0) {
|
||||||
dialogBoxCreate("Invalid value entered for number of Team Members (must be numeric, positive)");
|
dialogBoxCreate("Invalid value entered for number of Team Members (must be numeric and non-negative)");
|
||||||
} else {
|
} else {
|
||||||
props.action.teamCount = num;
|
action.teamCount = num;
|
||||||
}
|
}
|
||||||
props.onClose();
|
onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onTeamSize(event: React.ChangeEvent<HTMLInputElement>): void {
|
function onTeamSize(event: React.ChangeEvent<HTMLInputElement>): void {
|
||||||
const x = parseFloat(event.target.value);
|
const x = parseFloat(event.target.value);
|
||||||
if (x > props.bladeburner.teamSize) setTeamSize(props.bladeburner.teamSize);
|
if (x > bladeburner.teamSize) setTeamSize(bladeburner.teamSize);
|
||||||
else setTeamSize(x);
|
else setTeamSize(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal open={props.open} onClose={props.onClose}>
|
<Modal open={open} onClose={onClose}>
|
||||||
<Typography>
|
<form onSubmit={confirmTeamSize}>
|
||||||
Enter the amount of team members you would like to take on this Op. If you do not have the specified number of
|
<Typography>
|
||||||
team members, then as many as possible will be used. Note that team members may be lost during operations.
|
Enter the amount of team members you would like to take on this Op. If you do not have the specified number of
|
||||||
</Typography>
|
team members, then as many as possible will be used. Note that team members may be lost during operations.
|
||||||
<TextField autoFocus type="number" placeholder="Team size" value={teamSize} onChange={onTeamSize} />
|
</Typography>
|
||||||
<Button sx={{ mx: 2 }} onClick={confirmTeamSize}>
|
<TextField autoFocus type="number" placeholder="Team size" value={teamSize} onChange={onTeamSize} />
|
||||||
Confirm
|
<Button sx={{ mx: 2 }} type={"submit"}>
|
||||||
</Button>
|
Confirm
|
||||||
|
</Button>
|
||||||
|
</form>
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {
|
|||||||
CodingContractTypes,
|
CodingContractTypes,
|
||||||
ICodingContractReward,
|
ICodingContractReward,
|
||||||
} from "./CodingContracts";
|
} from "./CodingContracts";
|
||||||
|
import { currentNodeMults } from "./BitNode/BitNodeMultipliers";
|
||||||
import { Factions } from "./Faction/Factions";
|
import { Factions } from "./Faction/Factions";
|
||||||
import { Player } from "@player";
|
import { Player } from "@player";
|
||||||
import { GetServer, GetAllServers } from "./Server/AllServers";
|
import { GetServer, GetAllServers } from "./Server/AllServers";
|
||||||
@@ -124,7 +125,10 @@ function getRandomProblemType(): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getRandomReward(): ICodingContractReward {
|
function getRandomReward(): ICodingContractReward {
|
||||||
const rewardType = sanitizeRewardType(getRandomInt(0, CodingContractRewardType.Money));
|
// Don't offer money reward by default if BN multiplier is 0 (e.g. BN8)
|
||||||
|
const rewardTypeUpperBound =
|
||||||
|
currentNodeMults.CodingContractMoney === 0 ? CodingContractRewardType.Money - 1 : CodingContractRewardType.Money;
|
||||||
|
const rewardType = sanitizeRewardType(getRandomInt(0, rewardTypeUpperBound));
|
||||||
|
|
||||||
// Add additional information based on the reward type
|
// Add additional information based on the reward type
|
||||||
const factionsThatAllowHacking = Player.factions.filter((fac) => Factions[fac].getInfo().offerHackingWork);
|
const factionsThatAllowHacking = Player.factions.filter((fac) => Factions[fac].getInfo().offerHackingWork);
|
||||||
|
|||||||
@@ -56,42 +56,6 @@ export class Company {
|
|||||||
return this.companyPositions.has(typeof pos === "string" ? pos : pos.name);
|
return this.companyPositions.has(typeof pos === "string" ? pos : pos.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasAgentPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.agent0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasBusinessConsultantPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.businessConsult0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasBusinessPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.business0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasEmployeePositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.employee);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasITPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.IT0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasSecurityPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.security0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasSoftwareConsultantPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.softwareConsult0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasSoftwarePositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.software0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hasWaiterPositions(): boolean {
|
|
||||||
return this.companyPositions.has(JobName.waiter);
|
|
||||||
}
|
|
||||||
|
|
||||||
prestigeAugmentation(): void {
|
prestigeAugmentation(): void {
|
||||||
if (this.favor == null) this.favor = 0;
|
if (this.favor == null) this.favor = 0;
|
||||||
this.favor += this.getFavorGain();
|
this.favor += this.getFavorGain();
|
||||||
@@ -121,7 +85,7 @@ export class Company {
|
|||||||
return Generic_fromJSON(Company, value.data, Company.includedKeys);
|
return Generic_fromJSON(Company, value.data, Company.includedKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only these 3 keys are relevant to the save file
|
// Only these 2 keys are relevant to the save file
|
||||||
static includedKeys = ["favor", "playerReputation"] as const;
|
static includedKeys = ["favor", "playerReputation"] as const;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,16 @@
|
|||||||
import { Person as IPerson } from "@nsdefs";
|
import { Person as IPerson } from "@nsdefs";
|
||||||
import { CONSTANTS } from "../Constants";
|
import { CONSTANTS } from "../Constants";
|
||||||
import { JobName, JobField } from "@enums";
|
import { JobName, JobField } from "@enums";
|
||||||
import {
|
import type { Skills } from "../PersonObjects/Skills";
|
||||||
agentJobs,
|
|
||||||
businessConsultJobs,
|
|
||||||
businessJobs,
|
|
||||||
itJobs,
|
|
||||||
netEngJobs,
|
|
||||||
securityJobs,
|
|
||||||
softwareConsultJobs,
|
|
||||||
softwareJobs,
|
|
||||||
} from "./data/JobTracks";
|
|
||||||
|
|
||||||
export interface CompanyPositionCtorParams {
|
export interface CompanyPositionCtorParams {
|
||||||
nextPosition: JobName | null;
|
nextPosition: JobName | null;
|
||||||
field: JobField;
|
field: JobField;
|
||||||
baseSalary: number;
|
baseSalary: number;
|
||||||
repMultiplier: number;
|
repMultiplier: number;
|
||||||
|
applyText?: string;
|
||||||
|
hiredText?: string;
|
||||||
|
isPartTime?: boolean;
|
||||||
|
|
||||||
reqdHacking?: number;
|
reqdHacking?: number;
|
||||||
reqdStrength?: number;
|
reqdStrength?: number;
|
||||||
@@ -60,6 +54,15 @@ export class CompanyPosition {
|
|||||||
/** Reputation multiplier */
|
/** Reputation multiplier */
|
||||||
repMultiplier: number;
|
repMultiplier: number;
|
||||||
|
|
||||||
|
/** Text to display when applying for this job */
|
||||||
|
applyText: string;
|
||||||
|
|
||||||
|
/** Text to display when receiving this job */
|
||||||
|
hiredText: string;
|
||||||
|
|
||||||
|
/** Whether this position is part-time */
|
||||||
|
isPartTime: boolean;
|
||||||
|
|
||||||
/** Required stats to earn this position */
|
/** Required stats to earn this position */
|
||||||
requiredAgility: number;
|
requiredAgility: number;
|
||||||
requiredCharisma: number;
|
requiredCharisma: number;
|
||||||
@@ -93,6 +96,9 @@ export class CompanyPosition {
|
|||||||
this.nextPosition = p.nextPosition;
|
this.nextPosition = p.nextPosition;
|
||||||
this.baseSalary = p.baseSalary;
|
this.baseSalary = p.baseSalary;
|
||||||
this.repMultiplier = p.repMultiplier;
|
this.repMultiplier = p.repMultiplier;
|
||||||
|
this.isPartTime = p.isPartTime ?? false;
|
||||||
|
this.applyText = p.applyText ?? `Apply for ${this.name} Job`;
|
||||||
|
this.hiredText = p.hiredText ?? `Congratulations, you are now employed as a ${this.name}`;
|
||||||
|
|
||||||
this.requiredHacking = p.reqdHacking != null ? p.reqdHacking : 0;
|
this.requiredHacking = p.reqdHacking != null ? p.reqdHacking : 0;
|
||||||
this.requiredStrength = p.reqdStrength != null ? p.reqdStrength : 0;
|
this.requiredStrength = p.reqdStrength != null ? p.reqdStrength : 0;
|
||||||
@@ -130,6 +136,18 @@ export class CompanyPosition {
|
|||||||
this.charismaExpGain = p.charismaExpGain != null ? p.charismaExpGain : 0;
|
this.charismaExpGain = p.charismaExpGain != null ? p.charismaExpGain : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requiredSkills(jobStatReqOffset: number): Skills {
|
||||||
|
return {
|
||||||
|
hacking: this.requiredHacking > 0 ? this.requiredHacking + jobStatReqOffset : 0,
|
||||||
|
strength: this.requiredStrength > 0 ? this.requiredStrength + jobStatReqOffset : 0,
|
||||||
|
defense: this.requiredDefense > 0 ? this.requiredDefense + jobStatReqOffset : 0,
|
||||||
|
dexterity: this.requiredDexterity > 0 ? this.requiredDexterity + jobStatReqOffset : 0,
|
||||||
|
agility: this.requiredAgility > 0 ? this.requiredAgility + jobStatReqOffset : 0,
|
||||||
|
charisma: this.requiredCharisma > 0 ? this.requiredCharisma + jobStatReqOffset : 0,
|
||||||
|
intelligence: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
calculateJobPerformance(worker: IPerson): number {
|
calculateJobPerformance(worker: IPerson): number {
|
||||||
const hackRatio: number = (this.hackingEffectiveness * worker.skills.hacking) / CONSTANTS.MaxSkillLevel;
|
const hackRatio: number = (this.hackingEffectiveness * worker.skills.hacking) / CONSTANTS.MaxSkillLevel;
|
||||||
const strRatio: number = (this.strengthEffectiveness * worker.skills.strength) / CONSTANTS.MaxSkillLevel;
|
const strRatio: number = (this.strengthEffectiveness * worker.skills.strength) / CONSTANTS.MaxSkillLevel;
|
||||||
@@ -147,44 +165,4 @@ export class CompanyPosition {
|
|||||||
reputationGain += worker.skills.intelligence / CONSTANTS.MaxSkillLevel;
|
reputationGain += worker.skills.intelligence / CONSTANTS.MaxSkillLevel;
|
||||||
return reputationGain;
|
return reputationGain;
|
||||||
}
|
}
|
||||||
|
|
||||||
isSoftwareJob(): boolean {
|
|
||||||
return softwareJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isITJob(): boolean {
|
|
||||||
return itJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isSecurityEngineerJob(): boolean {
|
|
||||||
return this.name === JobName.securityEng;
|
|
||||||
}
|
|
||||||
|
|
||||||
isNetworkEngineerJob(): boolean {
|
|
||||||
return netEngJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isBusinessJob(): boolean {
|
|
||||||
return businessJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isSecurityJob(): boolean {
|
|
||||||
return securityJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isAgentJob(): boolean {
|
|
||||||
return agentJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isSoftwareConsultantJob(): boolean {
|
|
||||||
return softwareConsultJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isBusinessConsultantJob(): boolean {
|
|
||||||
return businessConsultJobs.includes(this.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
isPartTimeJob(): boolean {
|
|
||||||
return [JobName.employeePT, JobName.waiterPT].includes(this.name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
import { Company } from "./Company";
|
|
||||||
import { CompanyPosition } from "./CompanyPosition";
|
|
||||||
|
|
||||||
/** Returns a string with the given CompanyPosition's stat requirements */
|
|
||||||
export function getJobRequirementText(company: Company, pos: CompanyPosition, tooltiptext = false): string {
|
|
||||||
let reqText = "";
|
|
||||||
const offset: number = company.jobStatReqOffset;
|
|
||||||
const reqHacking: number = pos.requiredHacking > 0 ? pos.requiredHacking + offset : 0;
|
|
||||||
const reqStrength: number = pos.requiredStrength > 0 ? pos.requiredStrength + offset : 0;
|
|
||||||
const reqDefense: number = pos.requiredDefense > 0 ? pos.requiredDefense + offset : 0;
|
|
||||||
const reqDexterity: number = pos.requiredDexterity > 0 ? pos.requiredDexterity + offset : 0;
|
|
||||||
const reqAgility: number = pos.requiredDexterity > 0 ? pos.requiredDexterity + offset : 0;
|
|
||||||
const reqCharisma: number = pos.requiredCharisma > 0 ? pos.requiredCharisma + offset : 0;
|
|
||||||
const reqRep: number = pos.requiredReputation;
|
|
||||||
if (tooltiptext) {
|
|
||||||
reqText = "Requires:<br>";
|
|
||||||
reqText += reqHacking.toString() + " hacking<br>";
|
|
||||||
reqText += reqStrength.toString() + " strength<br>";
|
|
||||||
reqText += reqDefense.toString() + " defense<br>";
|
|
||||||
reqText += reqDexterity.toString() + " dexterity<br>";
|
|
||||||
reqText += reqAgility.toString() + " agility<br>";
|
|
||||||
reqText += reqCharisma.toString() + " charisma<br>";
|
|
||||||
reqText += reqRep.toString() + " reputation";
|
|
||||||
} else {
|
|
||||||
reqText = "(Requires ";
|
|
||||||
if (reqHacking > 0) {
|
|
||||||
reqText += reqHacking + " hacking, ";
|
|
||||||
}
|
|
||||||
if (reqStrength > 0) {
|
|
||||||
reqText += reqStrength + " strength, ";
|
|
||||||
}
|
|
||||||
if (reqDefense > 0) {
|
|
||||||
reqText += reqDefense + " defense, ";
|
|
||||||
}
|
|
||||||
if (reqDexterity > 0) {
|
|
||||||
reqText += reqDexterity + " dexterity, ";
|
|
||||||
}
|
|
||||||
if (reqAgility > 0) {
|
|
||||||
reqText += reqAgility + " agility, ";
|
|
||||||
}
|
|
||||||
if (reqCharisma > 0) {
|
|
||||||
reqText += reqCharisma + " charisma, ";
|
|
||||||
}
|
|
||||||
if (reqRep > 1) {
|
|
||||||
reqText += reqRep + " reputation, ";
|
|
||||||
}
|
|
||||||
reqText = reqText.substring(0, reqText.length - 2);
|
|
||||||
reqText += ")";
|
|
||||||
}
|
|
||||||
return reqText;
|
|
||||||
}
|
|
||||||
23
src/Company/GetJobRequirements.ts
Normal file
23
src/Company/GetJobRequirements.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { Company } from "./Company";
|
||||||
|
import { CompanyPosition } from "./CompanyPosition";
|
||||||
|
|
||||||
|
import { PlayerCondition, haveSkill, haveCompanyRep } from "../Faction/FactionJoinCondition";
|
||||||
|
import type { Skills } from "../PersonObjects/Skills";
|
||||||
|
|
||||||
|
export function getJobRequirements(company: Company, pos: CompanyPosition): PlayerCondition[] {
|
||||||
|
const reqSkills = pos.requiredSkills(company.jobStatReqOffset);
|
||||||
|
const reqs = [];
|
||||||
|
for (const [skillName, value] of Object.entries(reqSkills)) {
|
||||||
|
if (value > 0) reqs.push(haveSkill(skillName as keyof Skills, value));
|
||||||
|
}
|
||||||
|
if (pos.requiredReputation > 0) {
|
||||||
|
reqs.push(haveCompanyRep(company.name, pos.requiredReputation));
|
||||||
|
}
|
||||||
|
return reqs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns a string with the given CompanyPosition's stat requirements */
|
||||||
|
export function getJobRequirementText(company: Company, pos: CompanyPosition): string {
|
||||||
|
const reqs = getJobRequirements(company, pos);
|
||||||
|
return `(${pos.name} requires: ${reqs.map((s) => s.toString()).join(", ")})`;
|
||||||
|
}
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
import { CompanyCtorParams } from "../Company";
|
import { CompanyCtorParams } from "../Company";
|
||||||
|
|
||||||
import { CompanyName, JobName, FactionName } from "@enums";
|
import { CompanyName, FactionName, JobName } from "@enums";
|
||||||
import {
|
import {
|
||||||
agentJobs,
|
softwareJobs,
|
||||||
businessJobs,
|
businessJobs,
|
||||||
itJobs,
|
|
||||||
netEngJobs,
|
|
||||||
securityJobs,
|
securityJobs,
|
||||||
softwareConsultJobs,
|
softwareConsultJobs,
|
||||||
softwareJobs,
|
netEngJobs,
|
||||||
|
itJobs,
|
||||||
|
agentJobs,
|
||||||
|
businessConsultJobs,
|
||||||
} from "./JobTracks";
|
} from "./JobTracks";
|
||||||
|
|
||||||
export function getCompaniesMetadata(): Record<CompanyName, CompanyCtorParams> {
|
export function getCompaniesMetadata(): Record<CompanyName, CompanyCtorParams> {
|
||||||
@@ -107,14 +108,14 @@ export function getCompaniesMetadata(): Record<CompanyName, CompanyCtorParams> {
|
|||||||
},
|
},
|
||||||
[CompanyName.DefComm]: {
|
[CompanyName.DefComm]: {
|
||||||
name: CompanyName.DefComm,
|
name: CompanyName.DefComm,
|
||||||
companyPositions: [JobName.business5, ...allTechJobs, ...softwareConsultJobs],
|
companyPositions: [JobName.business5, ...allTechJobs, ...softwareConsultJobs, ...businessConsultJobs],
|
||||||
expMultiplier: 1.75,
|
expMultiplier: 1.75,
|
||||||
salaryMultiplier: 1.75,
|
salaryMultiplier: 1.75,
|
||||||
jobStatReqOffset: 199,
|
jobStatReqOffset: 199,
|
||||||
},
|
},
|
||||||
[CompanyName.HeliosLabs]: {
|
[CompanyName.HeliosLabs]: {
|
||||||
name: CompanyName.HeliosLabs,
|
name: CompanyName.HeliosLabs,
|
||||||
companyPositions: [JobName.business5, ...allTechJobs, ...softwareConsultJobs],
|
companyPositions: [JobName.business5, ...allTechJobs, ...softwareConsultJobs, ...businessConsultJobs],
|
||||||
expMultiplier: 1.8,
|
expMultiplier: 1.8,
|
||||||
salaryMultiplier: 1.8,
|
salaryMultiplier: 1.8,
|
||||||
jobStatReqOffset: 199,
|
jobStatReqOffset: 199,
|
||||||
@@ -149,28 +150,28 @@ export function getCompaniesMetadata(): Record<CompanyName, CompanyCtorParams> {
|
|||||||
},
|
},
|
||||||
[CompanyName.AeroCorp]: {
|
[CompanyName.AeroCorp]: {
|
||||||
name: CompanyName.AeroCorp,
|
name: CompanyName.AeroCorp,
|
||||||
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs],
|
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs, ...businessConsultJobs],
|
||||||
expMultiplier: 1.7,
|
expMultiplier: 1.7,
|
||||||
salaryMultiplier: 1.7,
|
salaryMultiplier: 1.7,
|
||||||
jobStatReqOffset: 199,
|
jobStatReqOffset: 199,
|
||||||
},
|
},
|
||||||
[CompanyName.OmniaCybersystems]: {
|
[CompanyName.OmniaCybersystems]: {
|
||||||
name: CompanyName.OmniaCybersystems,
|
name: CompanyName.OmniaCybersystems,
|
||||||
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs],
|
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs, ...businessConsultJobs],
|
||||||
expMultiplier: 1.7,
|
expMultiplier: 1.7,
|
||||||
salaryMultiplier: 1.7,
|
salaryMultiplier: 1.7,
|
||||||
jobStatReqOffset: 199,
|
jobStatReqOffset: 199,
|
||||||
},
|
},
|
||||||
[CompanyName.SolarisSpaceSystems]: {
|
[CompanyName.SolarisSpaceSystems]: {
|
||||||
name: CompanyName.SolarisSpaceSystems,
|
name: CompanyName.SolarisSpaceSystems,
|
||||||
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs],
|
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs, ...businessConsultJobs],
|
||||||
expMultiplier: 1.7,
|
expMultiplier: 1.7,
|
||||||
salaryMultiplier: 1.7,
|
salaryMultiplier: 1.7,
|
||||||
jobStatReqOffset: 199,
|
jobStatReqOffset: 199,
|
||||||
},
|
},
|
||||||
[CompanyName.DeltaOne]: {
|
[CompanyName.DeltaOne]: {
|
||||||
name: CompanyName.DeltaOne,
|
name: CompanyName.DeltaOne,
|
||||||
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs],
|
companyPositions: [JobName.business3, JobName.business5, ...allTechJobs, ...securityJobs, ...businessConsultJobs],
|
||||||
expMultiplier: 1.6,
|
expMultiplier: 1.6,
|
||||||
salaryMultiplier: 1.6,
|
salaryMultiplier: 1.6,
|
||||||
jobStatReqOffset: 199,
|
jobStatReqOffset: 199,
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 501,
|
reqdHacking: 501,
|
||||||
reqdReputation: 400e3,
|
reqdReputation: 400e3,
|
||||||
repMultiplier: 1.6,
|
repMultiplier: 1.6,
|
||||||
|
hiredText: `Congratulations, you are now ${JobName.software4}`,
|
||||||
},
|
},
|
||||||
[JobName.software5]: {
|
[JobName.software5]: {
|
||||||
nextPosition: JobName.software6, // Vice President of Technology
|
nextPosition: JobName.software6, // Vice President of Technology
|
||||||
@@ -78,6 +79,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 501,
|
reqdHacking: 501,
|
||||||
reqdReputation: 800e3,
|
reqdReputation: 800e3,
|
||||||
repMultiplier: 1.6,
|
repMultiplier: 1.6,
|
||||||
|
hiredText: `Congratulations, you are now ${JobName.software5}`,
|
||||||
},
|
},
|
||||||
[JobName.software6]: {
|
[JobName.software6]: {
|
||||||
nextPosition: JobName.software7, // Chief Technology Officer
|
nextPosition: JobName.software7, // Chief Technology Officer
|
||||||
@@ -91,6 +93,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 601,
|
reqdHacking: 601,
|
||||||
reqdReputation: 1.6e6,
|
reqdReputation: 1.6e6,
|
||||||
repMultiplier: 1.75,
|
repMultiplier: 1.75,
|
||||||
|
hiredText: `Congratulations, you are now ${JobName.software6}`,
|
||||||
},
|
},
|
||||||
[JobName.software7]: {
|
[JobName.software7]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
@@ -104,6 +107,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 751,
|
reqdHacking: 751,
|
||||||
reqdReputation: 3.2e6,
|
reqdReputation: 3.2e6,
|
||||||
repMultiplier: 2,
|
repMultiplier: 2,
|
||||||
|
hiredText: `Congratulations, you are now ${JobName.software7}`,
|
||||||
},
|
},
|
||||||
[JobName.IT0]: {
|
[JobName.IT0]: {
|
||||||
nextPosition: JobName.IT1, // IT Analyst
|
nextPosition: JobName.IT1, // IT Analyst
|
||||||
@@ -256,6 +260,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 76,
|
reqdHacking: 76,
|
||||||
reqdReputation: 800e3,
|
reqdReputation: 800e3,
|
||||||
repMultiplier: 1.6,
|
repMultiplier: 1.6,
|
||||||
|
hiredText: `Congratulations, you are now ${JobName.business4}`,
|
||||||
},
|
},
|
||||||
[JobName.business5]: {
|
[JobName.business5]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
@@ -269,6 +274,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 101,
|
reqdHacking: 101,
|
||||||
reqdReputation: 3.2e6,
|
reqdReputation: 3.2e6,
|
||||||
repMultiplier: 1.75,
|
repMultiplier: 1.75,
|
||||||
|
hiredText: `Congratulations, you are now ${JobName.business5}`,
|
||||||
},
|
},
|
||||||
[JobName.security0]: {
|
[JobName.security0]: {
|
||||||
nextPosition: JobName.security1, // Security Officer
|
nextPosition: JobName.security1, // Security Officer
|
||||||
@@ -457,6 +463,8 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
agilityExpGain: 0.02,
|
agilityExpGain: 0.02,
|
||||||
charismaExpGain: 0.05,
|
charismaExpGain: 0.05,
|
||||||
repMultiplier: 1,
|
repMultiplier: 1,
|
||||||
|
applyText: `Apply to be a ${JobName.waiter}`,
|
||||||
|
hiredText: `Congratulations, you are now employed as a ${JobName.waiter}`,
|
||||||
},
|
},
|
||||||
[JobName.employee]: {
|
[JobName.employee]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
@@ -472,6 +480,8 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
agilityExpGain: 0.02,
|
agilityExpGain: 0.02,
|
||||||
charismaExpGain: 0.04,
|
charismaExpGain: 0.04,
|
||||||
repMultiplier: 1,
|
repMultiplier: 1,
|
||||||
|
applyText: `Apply to be an ${JobName.employee}`,
|
||||||
|
hiredText: "Congratulations, you are now employed",
|
||||||
},
|
},
|
||||||
[JobName.softwareConsult0]: {
|
[JobName.softwareConsult0]: {
|
||||||
nextPosition: JobName.softwareConsult1, // Senior Software Consultant
|
nextPosition: JobName.softwareConsult1, // Senior Software Consultant
|
||||||
@@ -483,6 +493,8 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
charismaExpGain: 0.03,
|
charismaExpGain: 0.03,
|
||||||
reqdHacking: 51,
|
reqdHacking: 51,
|
||||||
repMultiplier: 1,
|
repMultiplier: 1,
|
||||||
|
applyText: `Pitch a Software Consulting contract`,
|
||||||
|
hiredText: `Congratulations, you got a contract as a ${JobName.softwareConsult0}`,
|
||||||
},
|
},
|
||||||
[JobName.softwareConsult1]: {
|
[JobName.softwareConsult1]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
@@ -495,6 +507,8 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 251,
|
reqdHacking: 251,
|
||||||
reqdCharisma: 51,
|
reqdCharisma: 51,
|
||||||
repMultiplier: 1.2,
|
repMultiplier: 1.2,
|
||||||
|
applyText: `Pitch a Software Consulting contract`,
|
||||||
|
hiredText: `Congratulations, you got a contract as a ${JobName.softwareConsult1}`,
|
||||||
},
|
},
|
||||||
[JobName.businessConsult0]: {
|
[JobName.businessConsult0]: {
|
||||||
nextPosition: JobName.businessConsult1, // Senior Business Consultant
|
nextPosition: JobName.businessConsult1, // Senior Business Consultant
|
||||||
@@ -507,6 +521,8 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 6,
|
reqdHacking: 6,
|
||||||
reqdCharisma: 51,
|
reqdCharisma: 51,
|
||||||
repMultiplier: 1,
|
repMultiplier: 1,
|
||||||
|
applyText: `Pitch a Business Consulting contract`,
|
||||||
|
hiredText: `Congratulations, you got a contract as a ${JobName.businessConsult0}`,
|
||||||
},
|
},
|
||||||
[JobName.businessConsult1]: {
|
[JobName.businessConsult1]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
@@ -519,10 +535,12 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
reqdHacking: 51,
|
reqdHacking: 51,
|
||||||
reqdCharisma: 226,
|
reqdCharisma: 226,
|
||||||
repMultiplier: 1.2,
|
repMultiplier: 1.2,
|
||||||
|
applyText: `Pitch a Business Consulting contract`,
|
||||||
|
hiredText: `Congratulations, you got a contract as a ${JobName.businessConsult1}`,
|
||||||
},
|
},
|
||||||
[JobName.waiterPT]: {
|
[JobName.waiterPT]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
field: JobField.partTimeWaiter,
|
field: JobField.waiter,
|
||||||
baseSalary: 20,
|
baseSalary: 20,
|
||||||
strengthEffectiveness: 10,
|
strengthEffectiveness: 10,
|
||||||
dexterityEffectiveness: 10,
|
dexterityEffectiveness: 10,
|
||||||
@@ -534,10 +552,13 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
agilityExpGain: 0.0075,
|
agilityExpGain: 0.0075,
|
||||||
charismaExpGain: 0.04,
|
charismaExpGain: 0.04,
|
||||||
repMultiplier: 1,
|
repMultiplier: 1,
|
||||||
|
isPartTime: true,
|
||||||
|
applyText: `Apply to be a ${JobName.waiterPT}`,
|
||||||
|
hiredText: `Congratulations, you are now employed as a ${JobName.waiterPT}`,
|
||||||
},
|
},
|
||||||
[JobName.employeePT]: {
|
[JobName.employeePT]: {
|
||||||
nextPosition: null,
|
nextPosition: null,
|
||||||
field: JobField.partTimeEmployee,
|
field: JobField.employee,
|
||||||
baseSalary: 20,
|
baseSalary: 20,
|
||||||
strengthEffectiveness: 10,
|
strengthEffectiveness: 10,
|
||||||
dexterityEffectiveness: 10,
|
dexterityEffectiveness: 10,
|
||||||
@@ -549,6 +570,9 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
|
|||||||
agilityExpGain: 0.0075,
|
agilityExpGain: 0.0075,
|
||||||
charismaExpGain: 0.03,
|
charismaExpGain: 0.03,
|
||||||
repMultiplier: 1,
|
repMultiplier: 1,
|
||||||
|
isPartTime: true,
|
||||||
|
applyText: `Apply to be a ${JobName.employeePT}`,
|
||||||
|
hiredText: "Congratulations, you are now employed part-time",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,42 @@
|
|||||||
import { JobName } from "@enums";
|
import { JobName, JobField } from "@enums";
|
||||||
export const softwareJobs = [
|
|
||||||
JobName.software0,
|
export const JobTracks: Record<JobField, readonly JobName[]> = {
|
||||||
JobName.software1,
|
[JobField.software]: [
|
||||||
JobName.software2,
|
JobName.software0,
|
||||||
JobName.software3,
|
JobName.software1,
|
||||||
JobName.software4,
|
JobName.software2,
|
||||||
JobName.software5,
|
JobName.software3,
|
||||||
JobName.software6,
|
JobName.software4,
|
||||||
JobName.software7,
|
JobName.software5,
|
||||||
];
|
JobName.software6,
|
||||||
export const itJobs = [JobName.IT0, JobName.IT1, JobName.IT2, JobName.IT3];
|
JobName.software7,
|
||||||
export const netEngJobs = [JobName.networkEng0, JobName.networkEng1];
|
],
|
||||||
export const businessJobs = [
|
[JobField.softwareConsultant]: [JobName.softwareConsult0, JobName.softwareConsult1],
|
||||||
JobName.business0,
|
[JobField.it]: [JobName.IT0, JobName.IT1, JobName.IT2, JobName.IT3],
|
||||||
JobName.business1,
|
[JobField.securityEngineer]: [JobName.securityEng],
|
||||||
JobName.business2,
|
[JobField.networkEngineer]: [JobName.networkEng0, JobName.networkEng1],
|
||||||
JobName.business3,
|
[JobField.business]: [
|
||||||
JobName.business4,
|
JobName.business0,
|
||||||
JobName.business5,
|
JobName.business1,
|
||||||
];
|
JobName.business2,
|
||||||
export const securityJobs = [JobName.security0, JobName.security1, JobName.security2, JobName.security3];
|
JobName.business3,
|
||||||
export const agentJobs = [JobName.agent0, JobName.agent1, JobName.agent2];
|
JobName.business4,
|
||||||
export const softwareConsultJobs = [JobName.softwareConsult0, JobName.softwareConsult1];
|
JobName.business5,
|
||||||
export const businessConsultJobs = [JobName.businessConsult0, JobName.businessConsult1];
|
],
|
||||||
|
[JobField.businessConsultant]: [JobName.businessConsult0, JobName.businessConsult1],
|
||||||
|
[JobField.security]: [JobName.security0, JobName.security1, JobName.security2, JobName.security3],
|
||||||
|
[JobField.agent]: [JobName.agent0, JobName.agent1, JobName.agent2],
|
||||||
|
[JobField.employee]: [JobName.employee],
|
||||||
|
[JobField.partTimeEmployee]: [JobName.employeePT],
|
||||||
|
[JobField.waiter]: [JobName.waiter],
|
||||||
|
[JobField.partTimeWaiter]: [JobName.waiterPT],
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export const softwareJobs = JobTracks[JobField.software];
|
||||||
|
export const itJobs = JobTracks[JobField.it];
|
||||||
|
export const netEngJobs = JobTracks[JobField.networkEngineer];
|
||||||
|
export const businessJobs = JobTracks[JobField.business];
|
||||||
|
export const securityJobs = JobTracks[JobField.security];
|
||||||
|
export const agentJobs = JobTracks[JobField.agent];
|
||||||
|
export const softwareConsultJobs = JobTracks[JobField.softwareConsultant];
|
||||||
|
export const businessConsultJobs = JobTracks[JobField.businessConsultant];
|
||||||
|
|||||||
63
src/Company/ui/ApplyToJobButton.tsx
Normal file
63
src/Company/ui/ApplyToJobButton.tsx
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import type { CompanyPosition } from "../CompanyPosition";
|
||||||
|
import type { Company } from "../Company";
|
||||||
|
|
||||||
|
import * as React from "react";
|
||||||
|
|
||||||
|
import { Player } from "@player";
|
||||||
|
import { Typography } from "@mui/material";
|
||||||
|
import { ButtonWithTooltip } from "../../ui/Components/ButtonWithTooltip";
|
||||||
|
import { JobSummary } from "./JobSummary";
|
||||||
|
import { Requirement } from "../../ui/Components/Requirement";
|
||||||
|
import { getJobRequirements } from "../GetJobRequirements";
|
||||||
|
|
||||||
|
interface ApplyToJobProps {
|
||||||
|
company: Company;
|
||||||
|
position: CompanyPosition;
|
||||||
|
qualified: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** React Component for a button that's used to apply for a job */
|
||||||
|
export function ApplyToJobButton({ company, position, qualified }: ApplyToJobProps): React.ReactElement {
|
||||||
|
const reqs = getJobRequirements(company, position);
|
||||||
|
const positionRequirements =
|
||||||
|
reqs.length == 0 ? (
|
||||||
|
<Typography>Accepting all applicants</Typography>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<Typography>Requirements:</Typography>
|
||||||
|
{reqs.map((req, i) => (
|
||||||
|
<Requirement key={i} fulfilled={req.isSatisfied(Player)} value={req.toString()} />
|
||||||
|
))}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
const positionDetails = (
|
||||||
|
<>
|
||||||
|
<JobSummary company={company} position={position} />
|
||||||
|
{position.isPartTime && (
|
||||||
|
<Typography>
|
||||||
|
<br />
|
||||||
|
Part-time jobs have no penalty for
|
||||||
|
<br /> doing something else simultaneously.
|
||||||
|
</Typography>
|
||||||
|
)}
|
||||||
|
<br />
|
||||||
|
{positionRequirements}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
function applyForJob(): void {
|
||||||
|
Player.applyForJob(company, position);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ButtonWithTooltip
|
||||||
|
disabledTooltip={!qualified && positionDetails}
|
||||||
|
normalTooltip={positionDetails}
|
||||||
|
onClick={applyForJob}
|
||||||
|
tooltipProps={{ style: { display: "grid" } }}
|
||||||
|
>
|
||||||
|
{position.applyText}
|
||||||
|
</ButtonWithTooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
39
src/Company/ui/JobListings.tsx
Normal file
39
src/Company/ui/JobListings.tsx
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import type { Company } from "../Company";
|
||||||
|
import type { CompanyPosition } from "../CompanyPosition";
|
||||||
|
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
import { CompanyPositions } from "../CompanyPositions";
|
||||||
|
import { ApplyToJobButton } from "./ApplyToJobButton";
|
||||||
|
import { Player } from "@player";
|
||||||
|
|
||||||
|
interface JobListingsProps {
|
||||||
|
company: Company;
|
||||||
|
currentPosition: CompanyPosition | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function JobListings({ company, currentPosition }: JobListingsProps): React.ReactElement {
|
||||||
|
const jobNames = [...company.companyPositions];
|
||||||
|
const qualifiedJobs = new Set(jobNames.filter((jobName) => Player.isQualified(company, CompanyPositions[jobName])));
|
||||||
|
const jobsToShow = [];
|
||||||
|
for (const jobName of jobNames) {
|
||||||
|
if (jobName === currentPosition?.name) continue;
|
||||||
|
const job = CompanyPositions[jobName];
|
||||||
|
const nextJobName = job.nextPosition;
|
||||||
|
// Don't show a job if we already qualify for a later job offered by this company
|
||||||
|
if (nextJobName && qualifiedJobs.has(nextJobName)) continue;
|
||||||
|
// Don't show a job if we don't qualify for it, unless it's a starting job or a promotion from current job
|
||||||
|
if (!qualifiedJobs.has(jobName) && job.requiredReputation > 0 && jobName !== currentPosition?.nextPosition) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
jobsToShow.push(job);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{jobsToShow.map((job) => (
|
||||||
|
<ApplyToJobButton key={job.name} company={company} position={job} qualified={qualifiedJobs.has(job.name)} />
|
||||||
|
))}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
35
src/Company/ui/JobSummary.tsx
Normal file
35
src/Company/ui/JobSummary.tsx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import type { Company } from "../Company";
|
||||||
|
import type { CompanyPosition } from "../CompanyPosition";
|
||||||
|
|
||||||
|
import { Typography } from "@mui/material";
|
||||||
|
import { Player } from "@player";
|
||||||
|
import * as React from "react";
|
||||||
|
import { CONSTANTS } from "../../Constants";
|
||||||
|
import { calculateCompanyWorkStats } from "../../Work/Formulas";
|
||||||
|
import { MoneyRate } from "../../ui/React/MoneyRate";
|
||||||
|
import { ReputationRate } from "../../ui/React/ReputationRate";
|
||||||
|
import { StatsTable } from "../../ui/React/StatsTable";
|
||||||
|
|
||||||
|
const CYCLES_PER_SEC = 1000 / CONSTANTS.MilliPerCycle;
|
||||||
|
interface JobSummaryProps {
|
||||||
|
company: Company;
|
||||||
|
position: CompanyPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function JobSummary({ company, position }: JobSummaryProps): React.ReactElement {
|
||||||
|
const workStats = calculateCompanyWorkStats(Player, company, position, company.favor);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Typography>
|
||||||
|
<u>{position.name}</u>
|
||||||
|
</Typography>
|
||||||
|
<StatsTable
|
||||||
|
wide
|
||||||
|
rows={[
|
||||||
|
["Wages:", <MoneyRate key="money" money={workStats.money * CYCLES_PER_SEC} />],
|
||||||
|
["Reputation:", <ReputationRate key="rep" reputation={workStats.reputation * CYCLES_PER_SEC} />],
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -84,9 +84,9 @@ export const CONSTANTS: {
|
|||||||
Donations: number; // number of blood/plasma/palette donation the dev have verified., boosts NFG
|
Donations: number; // number of blood/plasma/palette donation the dev have verified., boosts NFG
|
||||||
LatestUpdate: string;
|
LatestUpdate: string;
|
||||||
} = {
|
} = {
|
||||||
VersionString: "2.5.1",
|
VersionString: "2.5.2",
|
||||||
isDevBranch: false,
|
isDevBranch: false,
|
||||||
VersionNumber: 36,
|
VersionNumber: 37,
|
||||||
|
|
||||||
/** Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
|
/** Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
|
||||||
* and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
|
* and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
|
||||||
@@ -223,65 +223,53 @@ export const CONSTANTS: {
|
|||||||
|
|
||||||
// Also update doc/source/changelog.rst
|
// Also update doc/source/changelog.rst
|
||||||
LatestUpdate: `
|
LatestUpdate: `
|
||||||
## v2.5.1 - 30 November 2023 Update
|
## v2.5.2 - 26 December 2023
|
||||||
|
|
||||||
### NOTES
|
|
||||||
|
|
||||||
For the Steam version, any special options you have enabled in the File menu may need to be reselected after this update, due to a change in how these settings are stored.
|
|
||||||
|
|
||||||
### MAJOR ADDITIONS
|
|
||||||
|
|
||||||
- Added a faction rumors system, to learn the requirements for joining factions ingame (@jjclark1982)
|
|
||||||
|
|
||||||
### API
|
### API
|
||||||
|
|
||||||
- (Bladeburner) Added ns.bladeburner.nextUpdate, which allows waiting for the next update of the bladeburner mechanic (@jjclark1982)
|
- Added limit of 1e9 for additionalMsec property of HGWOptions (@d0sboots)
|
||||||
- (Bladeburner) Added ns.bladeburner.getNextBlackOp, which provides name and rank info for the next Black Operation that can be completed (@myCatsName)
|
- ns.share effect is now boosted by host server core count (@TheAimMan)
|
||||||
- (Corporation) Added ns.corporation.nextUpdate, which allows waiting for the next update of the corporation mechanic (@jjclark1982)
|
- Fix a bug with HGWOptions that caused the default value to be 1 thread even for scripts running multiple threads (@DJMatch3000)
|
||||||
- (Corporation) Added a size property to the return value of getProduct (@Caldwell-74)
|
- (Singularity) ns.singularity.applyToCompany now returns the JobName if a job was obtained, or null otherwise - previously was boolean (@jjclark1982)
|
||||||
- (Corporation) ns.corporation.getCorporation return value: 'state' property is deprecated. Added 'prevState' and 'nextState' properties. (@Caldwell-74)
|
- (Singularity) ns.singularity.getCurrentWork now requires access to the singularity API (@TheAimMan)
|
||||||
- (Gang) Added ns.gang.nextUpdate, which allows waiting for the next update of the gang mechanic (@jjclark1982)
|
- (Singularity) Added ns.singularity.getFactionInviteRequirements (@jjclark1982)
|
||||||
- (Singularity) Added a JobField enum, and used this for the ns.singularity.applyToCompany function (@alutman)
|
- (Stanek) ns.stanek.chargeFragment is now boosted by host server core count (@TheAimMan)
|
||||||
- (Singularity) ns.singularity.purchaseProgram now returns true for programs that are already owned even if the player doesn't have enough money to re-buy the program (@ncharris93)
|
|
||||||
- (Sleeve) Added nextCompletion promise as a property of sleeve bladeburner work tasks (@Snarling)
|
|
||||||
- (Stanek) Added an effect property to getFragment (@TheAimMan)
|
|
||||||
- (Stock) Added ns.stock.nextUpdate, which allows waiting for the next update of the stock mechanic (@jjclark1982)
|
|
||||||
|
|
||||||
### BUGFIX
|
### BUGFIX
|
||||||
|
|
||||||
- (Bladeburner) Fixed a bug that could allow reaching -1 contracts available (@TheAimMan)
|
- (Bladeburner) Operation team size modal now handles keyboard submission correctly (@Snarling)
|
||||||
- (Corporation) Fix an incorrect calculation when adding more employees to an office (@Caldwell-74)
|
- (Corporation) Fixed an issue with Warehouse size being out of sync following prduct sale (@Kelenius)
|
||||||
- (Corporation) Bulk purchase can no longer be used to exceed maximum warehouse capacity (@TheAimMan)
|
- (Factions) Fixed some display order issues, and possible multiple entries for a faction (@jjclark1982)
|
||||||
- (Corporation) Fixed a bug that allowed out-of-order research (@TheAimMan)
|
- (Factions) Fixed an issue with certain factions not becoming "known" when joining them (@jjclark1982)
|
||||||
- (Corporation) Product production cost is stored separately for each city (@Caldwell-74)
|
- (Grafting) Entropy now has the correct negative effect on hacknet multipliers (@TheAimMan)
|
||||||
- (Sleeve) Sleeve crime work can no longer cause an overflow of %completion when performing quick crimes during bonus time (@TheAimMan)
|
- (Hashnet) Fixed an issue where the SF9.3 reward server had an incorrect number of cores (@cigarmemr)
|
||||||
- (Stanek) Multipliers from Stanek are now calculated correctly even if the player has Entropy (@yichizhng)
|
- (Terminal) Fixed a bug with script autocompletion when the script is inside a subdirectory (@draughtnyan)
|
||||||
- (Stanek) Fix a bug where Stanek bonuses were not being removed correctly after a reset (@TheAimMan)
|
|
||||||
- Fix an error that would occur in some cases when using gymGains or universityGains (@cigarmemr)
|
|
||||||
- Fix tab autocompletion when running a sceript without the run command (@mytskine)
|
|
||||||
- Fix a bug that could cause the wrong coding contract to be deleted when using rm (@TheAimMan)
|
|
||||||
- Scripts no longer show $0 for offline money income (@alutman)
|
|
||||||
- Faction invitations are now cleared properly when performing a reset (@alutman)
|
|
||||||
- API functions that work on a hostname no longer work on servers that have not been added to the network. (@TheAimMan)
|
|
||||||
- Fix an issue where the "True Recursion" achievement could be granted incorrectly (@jjclark1982)
|
|
||||||
|
|
||||||
### MISC
|
### MISC
|
||||||
|
|
||||||
- (Sleeve) Added ability to set a sleeve to idle through the UI (@Sphyxis)
|
- Added basic protection for certain global values that could cause a recovery screen if reassigned (@Snarling)
|
||||||
- Updated lots of dependencies (@Caldwell-74)
|
- Fixed conditions for an easter egg message (@cigarmemr)
|
||||||
- Updated electron to the latest version (Steam version only) (@Snarling)
|
- (Bitverse) Changed listed difficulty for BN3 to "hard"
|
||||||
- Various spelling / grammar / wording fixes (@ficocelliguy, @Squirlll, @Warrobot10)
|
- (CodingContract) Reduce incidence of $0 coding contract rewards in circumstances where the reward would be $0 (@trambelus)
|
||||||
- Minor reorganization and streamlining in Script Editor code (@Snarling)
|
- (Corporation) Added better accounting of funds transactions (@jjclark1982)
|
||||||
- Tweaked the .lit file referencing Illuminati to give a better idea about joining requirements (@d0sboots)
|
- (Corporation) Remove cooldown on starting over corporation, but maintain remaining cooldown for selling shares (@jjclark1982)
|
||||||
- (Steam version) Replaced outdated electron-config with electron-store (@tiziodcaio)
|
- (Corporation) Removed some legacy code that was not doing anything (@catloversg)
|
||||||
|
- (DevMenu) Added the ability to add/remove sleeves from the dev menu (@Sphyxis, @Snarling)
|
||||||
|
- (Docs) Fixed various typos in documentation (@tdpeuter)
|
||||||
|
- (Factions) Added a documentation page for faction join requirements (@jjclark1982)
|
||||||
|
- (Formulas) Added clarification for the unit of time returned by hackTime, growTime, and weakenTime functions (@d0sboots)
|
||||||
|
- (Ports) Promises from port.nextWrite resolve in the same order they were created, instead of reverse order (@LJNeon)
|
||||||
|
- (Sleeve) Add task counters for Crime and Bladeburner tasks (@TheAimMan)
|
||||||
|
- (Stock) Add some randomization to timing for stockmarket forecast change events (@Caldwell-74)
|
||||||
|
- (Terminal) Added the --all option for unalias, to allow removing all aliases (@Sphyxis)
|
||||||
|
- Nerf noodle bar (various contributors)
|
||||||
|
|
||||||
### UI
|
### UI
|
||||||
|
|
||||||
- (Corporation) Improved the display of corporation state. (@Caldwell-74)
|
- Message for buying TOR router no longer implies the need to connect to darkweb (@Kelenius)
|
||||||
- (Corporation) Improved various Corporation UIs (@jjclark1982)
|
- (Company) Rework of the job location details (@jjclark1982)
|
||||||
- (Gang) Removed the territory warfare toggle from the main Gang screen (@Tyasuh)
|
- (Company) Added previous/next buttons for job location if the player has multiple jobs (@Kelenius)
|
||||||
- Added number of exploits to import savegame comparison (@myCatsName)
|
- (Factions) Only show warning about enemy factions for factions with enemies (@jjclark1982)
|
||||||
- Dev menu improvements (@myCatsName, @Snarling)
|
- (Stanek) Improved the display of the Stanek grid (@Kelenius)
|
||||||
- Added a credits button on the options page (@myCatsName)
|
|
||||||
`,
|
`,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export function NewDivision(corporation: Corporation, industry: IndustryType, na
|
|||||||
} else if (name === "") {
|
} else if (name === "") {
|
||||||
throw new Error("New division must have a name!");
|
throw new Error("New division must have a name!");
|
||||||
} else {
|
} else {
|
||||||
corporation.funds = corporation.funds - cost;
|
corporation.loseFunds(cost, "division");
|
||||||
corporation.divisions.set(
|
corporation.divisions.set(
|
||||||
name,
|
name,
|
||||||
new Division({
|
new Division({
|
||||||
@@ -46,9 +46,12 @@ export function NewDivision(corporation: Corporation, industry: IndustryType, na
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function removeDivision(corporation: Corporation, name: string) {
|
export function removeDivision(corporation: Corporation, name: string): number {
|
||||||
if (!corporation.divisions.has(name)) throw new Error("There is no division called " + name);
|
const division = corporation.divisions.get(name);
|
||||||
|
if (!division) throw new Error("There is no division called " + name);
|
||||||
|
const price = division.calculateRecoupableValue();
|
||||||
corporation.divisions.delete(name);
|
corporation.divisions.delete(name);
|
||||||
|
|
||||||
// We also need to remove any exports that were pointing to the old division
|
// We also need to remove any exports that were pointing to the old division
|
||||||
for (const otherDivision of corporation.divisions.values()) {
|
for (const otherDivision of corporation.divisions.values()) {
|
||||||
for (const warehouse of getRecordValues(otherDivision.warehouses)) {
|
for (const warehouse of getRecordValues(otherDivision.warehouses)) {
|
||||||
@@ -60,6 +63,8 @@ export function removeDivision(corporation: Corporation, name: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
corporation.gainFunds(price, "division");
|
||||||
|
return price;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function purchaseOffice(corporation: Corporation, division: Division, city: CityName): void {
|
export function purchaseOffice(corporation: Corporation, division: Division, city: CityName): void {
|
||||||
@@ -69,7 +74,7 @@ export function purchaseOffice(corporation: Corporation, division: Division, cit
|
|||||||
if (division.offices[city]) {
|
if (division.offices[city]) {
|
||||||
throw new Error(`You have already expanded into ${city} for ${division.name}`);
|
throw new Error(`You have already expanded into ${city} for ${division.name}`);
|
||||||
}
|
}
|
||||||
corporation.addNonIncomeFunds(-corpConstants.officeInitialCost);
|
corporation.loseFunds(corpConstants.officeInitialCost, "division");
|
||||||
division.offices[city] = new OfficeSpace({
|
division.offices[city] = new OfficeSpace({
|
||||||
city: city,
|
city: city,
|
||||||
size: corpConstants.officeInitialSize,
|
size: corpConstants.officeInitialSize,
|
||||||
@@ -98,7 +103,7 @@ export function GoPublic(corporation: Corporation, numShares: number): void {
|
|||||||
corporation.sharePrice = initialSharePrice;
|
corporation.sharePrice = initialSharePrice;
|
||||||
corporation.issuedShares += numShares;
|
corporation.issuedShares += numShares;
|
||||||
corporation.numShares -= numShares;
|
corporation.numShares -= numShares;
|
||||||
corporation.addNonIncomeFunds(numShares * initialSharePrice);
|
corporation.gainFunds(numShares * initialSharePrice, "public equity");
|
||||||
}
|
}
|
||||||
|
|
||||||
export function IssueNewShares(
|
export function IssueNewShares(
|
||||||
@@ -123,7 +128,7 @@ export function IssueNewShares(
|
|||||||
corporation.issuedShares += amount - privateShares;
|
corporation.issuedShares += amount - privateShares;
|
||||||
corporation.investorShares += privateShares;
|
corporation.investorShares += privateShares;
|
||||||
corporation.totalShares += amount;
|
corporation.totalShares += amount;
|
||||||
corporation.addNonIncomeFunds(profit);
|
corporation.gainFunds(profit, "public equity");
|
||||||
// Set sharePrice directly because all formulas will be based on stale cycleValuation data
|
// Set sharePrice directly because all formulas will be based on stale cycleValuation data
|
||||||
corporation.sharePrice = newSharePrice;
|
corporation.sharePrice = newSharePrice;
|
||||||
|
|
||||||
@@ -144,7 +149,7 @@ export function AcceptInvestmentOffer(corporation: Corporation): void {
|
|||||||
const funding = val * percShares * roundMultiplier;
|
const funding = val * percShares * roundMultiplier;
|
||||||
const investShares = Math.floor(corpConstants.initialShares * percShares);
|
const investShares = Math.floor(corpConstants.initialShares * percShares);
|
||||||
corporation.fundingRound++;
|
corporation.fundingRound++;
|
||||||
corporation.addNonIncomeFunds(funding);
|
corporation.gainFunds(funding, "private equity");
|
||||||
|
|
||||||
corporation.numShares -= investShares;
|
corporation.numShares -= investShares;
|
||||||
corporation.investorShares += investShares;
|
corporation.investorShares += investShares;
|
||||||
@@ -310,7 +315,7 @@ export function BulkPurchase(
|
|||||||
}
|
}
|
||||||
const cost = amt * material.marketPrice;
|
const cost = amt * material.marketPrice;
|
||||||
if (corp.funds >= cost) {
|
if (corp.funds >= cost) {
|
||||||
corp.funds = corp.funds - cost;
|
corp.loseFunds(cost, "materials");
|
||||||
material.stored += amt;
|
material.stored += amt;
|
||||||
warehouse.sizeUsed = warehouse.sizeUsed + amt * matSize;
|
warehouse.sizeUsed = warehouse.sizeUsed + amt * matSize;
|
||||||
} else {
|
} else {
|
||||||
@@ -358,13 +363,13 @@ export function UpgradeOfficeSize(corp: Corporation, office: OfficeSpace, size:
|
|||||||
const cost = corpConstants.officeInitialCost * mult;
|
const cost = corpConstants.officeInitialCost * mult;
|
||||||
if (corp.funds < cost) return;
|
if (corp.funds < cost) return;
|
||||||
office.size += size;
|
office.size += size;
|
||||||
corp.addNonIncomeFunds(-cost);
|
corp.loseFunds(cost, "office");
|
||||||
}
|
}
|
||||||
|
|
||||||
export function BuyTea(corp: Corporation, office: OfficeSpace): boolean {
|
export function BuyTea(corp: Corporation, office: OfficeSpace): boolean {
|
||||||
const cost = office.getTeaCost();
|
const cost = office.getTeaCost();
|
||||||
if (corp.funds < cost || !office.setTea()) return false;
|
if (corp.funds < cost || !office.setTea()) return false;
|
||||||
corp.funds -= cost;
|
corp.loseFunds(cost, "tea");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,7 +383,7 @@ export function ThrowParty(corp: Corporation, office: OfficeSpace, costPerEmploy
|
|||||||
if (!office.setParty(mult)) {
|
if (!office.setParty(mult)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
corp.funds -= cost;
|
corp.loseFunds(cost, "parties");
|
||||||
|
|
||||||
return mult;
|
return mult;
|
||||||
}
|
}
|
||||||
@@ -386,7 +391,7 @@ export function ThrowParty(corp: Corporation, office: OfficeSpace, costPerEmploy
|
|||||||
export function purchaseWarehouse(corp: Corporation, division: Division, city: CityName): void {
|
export function purchaseWarehouse(corp: Corporation, division: Division, city: CityName): void {
|
||||||
if (corp.funds < corpConstants.warehouseInitialCost) return;
|
if (corp.funds < corpConstants.warehouseInitialCost) return;
|
||||||
if (division.warehouses[city]) return;
|
if (division.warehouses[city]) return;
|
||||||
corp.addNonIncomeFunds(-corpConstants.warehouseInitialCost);
|
corp.loseFunds(corpConstants.warehouseInitialCost, "division");
|
||||||
division.warehouses[city] = new Warehouse({
|
division.warehouses[city] = new Warehouse({
|
||||||
division: division,
|
division: division,
|
||||||
loc: city,
|
loc: city,
|
||||||
@@ -406,13 +411,13 @@ export function UpgradeWarehouse(corp: Corporation, division: Division, warehous
|
|||||||
if (corp.funds < sizeUpgradeCost) return;
|
if (corp.funds < sizeUpgradeCost) return;
|
||||||
warehouse.level += amt;
|
warehouse.level += amt;
|
||||||
warehouse.updateSize(corp, division);
|
warehouse.updateSize(corp, division);
|
||||||
corp.addNonIncomeFunds(-sizeUpgradeCost);
|
corp.loseFunds(sizeUpgradeCost, "warehouse");
|
||||||
}
|
}
|
||||||
|
|
||||||
export function HireAdVert(corp: Corporation, division: Division): void {
|
export function HireAdVert(corp: Corporation, division: Division): void {
|
||||||
const cost = division.getAdVertCost();
|
const cost = division.getAdVertCost();
|
||||||
if (corp.funds < cost) return;
|
if (corp.funds < cost) return;
|
||||||
corp.funds = corp.funds - cost;
|
corp.loseFunds(cost, "advert");
|
||||||
division.applyAdVert(corp);
|
division.applyAdVert(corp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,7 +459,7 @@ export function MakeProduct(
|
|||||||
throw new Error(`You already have a product with this name!`);
|
throw new Error(`You already have a product with this name!`);
|
||||||
}
|
}
|
||||||
|
|
||||||
corp.funds = corp.funds - (designInvest + marketingInvest);
|
corp.loseFunds(designInvest + marketingInvest, "product development");
|
||||||
division.products.set(product.name, product);
|
division.products.set(product.name, product);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
import { Player } from "@player";
|
import { Player } from "@player";
|
||||||
|
import { CorpStateName, InvestmentOffer } from "@nsdefs";
|
||||||
import { CorpUnlockName, CorpUpgradeName, LiteratureName } from "@enums";
|
import { CorpUnlockName, CorpUpgradeName, LiteratureName } from "@enums";
|
||||||
import { CorporationState } from "./CorporationState";
|
import { CorporationState } from "./CorporationState";
|
||||||
import { CorpUnlocks } from "./data/CorporationUnlocks";
|
import { CorpUnlocks } from "./data/CorporationUnlocks";
|
||||||
import { CorpUpgrades } from "./data/CorporationUpgrades";
|
import { CorpUpgrades } from "./data/CorporationUpgrades";
|
||||||
import * as corpConstants from "./data/Constants";
|
import * as corpConstants from "./data/Constants";
|
||||||
import { IndustriesData } from "./data/IndustryData";
|
import { FundsSource, LongTermFundsSources } from "./data/FundsSource";
|
||||||
import { Division } from "./Division";
|
import { Division } from "./Division";
|
||||||
|
import { calculateUpgradeCost } from "./helpers";
|
||||||
|
|
||||||
import { currentNodeMults } from "../BitNode/BitNodeMultipliers";
|
import { currentNodeMults } from "../BitNode/BitNodeMultipliers";
|
||||||
import { showLiterature } from "../Literature/LiteratureHelpers";
|
import { showLiterature } from "../Literature/LiteratureHelpers";
|
||||||
|
|
||||||
import { dialogBoxCreate } from "../ui/React/DialogBox";
|
import { dialogBoxCreate } from "../ui/React/DialogBox";
|
||||||
import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../utils/JSONReviver";
|
import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../utils/JSONReviver";
|
||||||
import { CorpStateName, InvestmentOffer } from "@nsdefs";
|
|
||||||
import { calculateUpgradeCost } from "./helpers";
|
|
||||||
import { JSONMap, JSONSet } from "../Types/Jsonable";
|
import { JSONMap, JSONSet } from "../Types/Jsonable";
|
||||||
import { formatMoney } from "../ui/formatNumber";
|
import { formatMoney } from "../ui/formatNumber";
|
||||||
import { isPositiveInteger } from "../types";
|
import { isPositiveInteger } from "../types";
|
||||||
@@ -21,9 +21,10 @@ import { createEnumKeyedRecord, getRecordValues } from "../Types/Record";
|
|||||||
|
|
||||||
export const CorporationResolvers: ((prevState: CorpStateName) => void)[] = [];
|
export const CorporationResolvers: ((prevState: CorpStateName) => void)[] = [];
|
||||||
|
|
||||||
interface IParams {
|
interface ICorporationParams {
|
||||||
name?: string;
|
name?: string;
|
||||||
seedFunded?: boolean;
|
seedFunded?: boolean;
|
||||||
|
shareSaleCooldown?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Corporation {
|
export class Corporation {
|
||||||
@@ -70,28 +71,29 @@ export class Corporation {
|
|||||||
|
|
||||||
state = new CorporationState();
|
state = new CorporationState();
|
||||||
|
|
||||||
constructor(params: IParams = {}) {
|
constructor(params: ICorporationParams = {}) {
|
||||||
this.name = params.name || "The Corporation";
|
this.name = params.name || "The Corporation";
|
||||||
this.seedFunded = params.seedFunded ?? false;
|
this.seedFunded = params.seedFunded ?? false;
|
||||||
|
this.shareSaleCooldown = params.shareSaleCooldown ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
addFunds(amt: number): void {
|
gainFunds(amt: number, source: FundsSource): void {
|
||||||
if (!isFinite(amt)) {
|
if (!isFinite(amt)) {
|
||||||
console.error("Trying to add invalid amount of funds. Report to a developer.");
|
console.error("Trying to add invalid amount of funds. Please report to game developer.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (LongTermFundsSources.has(source)) {
|
||||||
|
// This cycle's assets include the purchase price of a capital expenditure.
|
||||||
|
// (It will likely depreciate in the following cycle.)
|
||||||
|
// Or the value of some non-accounted item (equity, hashes) that was sold for a capital gain.
|
||||||
|
// (It will remain as funds, with no effect on assetDelta.)
|
||||||
|
this.totalAssets += Math.abs(amt);
|
||||||
|
}
|
||||||
this.funds += amt;
|
this.funds += amt;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add or subtract funds which should not be counted for valuation; e.g. investments,
|
loseFunds(amt: number, source: FundsSource): void {
|
||||||
// upgrades, stock issuance
|
return this.gainFunds(-amt, source);
|
||||||
addNonIncomeFunds(amt: number): void {
|
|
||||||
if (!isFinite(amt)) {
|
|
||||||
console.error("Trying to add invalid amount of funds. Report to a developer.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.totalAssets += amt;
|
|
||||||
this.funds += amt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getNextState(): CorpStateName {
|
getNextState(): CorpStateName {
|
||||||
@@ -142,8 +144,6 @@ export class Corporation {
|
|||||||
this.revenue = this.revenue + ind.lastCycleRevenue;
|
this.revenue = this.revenue + ind.lastCycleRevenue;
|
||||||
this.expenses = this.expenses + ind.lastCycleExpenses;
|
this.expenses = this.expenses + ind.lastCycleExpenses;
|
||||||
});
|
});
|
||||||
const profit = this.revenue - this.expenses;
|
|
||||||
const cycleProfit = profit * (marketCycles * corpConstants.secondsPerMarketCycle);
|
|
||||||
if (isNaN(this.funds) || this.funds === Infinity || this.funds === -Infinity) {
|
if (isNaN(this.funds) || this.funds === Infinity || this.funds === -Infinity) {
|
||||||
dialogBoxCreate(
|
dialogBoxCreate(
|
||||||
"There was an error calculating your Corporations funds and they got reset to 0. " +
|
"There was an error calculating your Corporations funds and they got reset to 0. " +
|
||||||
@@ -152,18 +152,20 @@ export class Corporation {
|
|||||||
);
|
);
|
||||||
this.funds = 150e9;
|
this.funds = 150e9;
|
||||||
}
|
}
|
||||||
|
const cycleRevenue = this.revenue * (marketCycles * corpConstants.secondsPerMarketCycle);
|
||||||
|
const cycleExpenses = this.expenses * (marketCycles * corpConstants.secondsPerMarketCycle);
|
||||||
|
const cycleProfit = cycleRevenue - cycleExpenses;
|
||||||
|
this.gainFunds(cycleRevenue, "operating revenue");
|
||||||
|
this.loseFunds(cycleExpenses, "operating expenses");
|
||||||
if (this.dividendRate > 0 && cycleProfit > 0) {
|
if (this.dividendRate > 0 && cycleProfit > 0) {
|
||||||
// Validate input again, just to be safe
|
// Validate input again, just to be safe
|
||||||
if (isNaN(this.dividendRate) || this.dividendRate < 0 || this.dividendRate > corpConstants.dividendMaxRate) {
|
if (isNaN(this.dividendRate) || this.dividendRate < 0 || this.dividendRate > corpConstants.dividendMaxRate) {
|
||||||
console.error(`Invalid Corporation dividend rate: ${this.dividendRate}`);
|
console.error(`Invalid Corporation dividend rate: ${this.dividendRate}`);
|
||||||
} else {
|
} else {
|
||||||
const totalDividends = this.dividendRate * cycleProfit;
|
const totalDividends = this.dividendRate * cycleProfit;
|
||||||
const retainedEarnings = cycleProfit - totalDividends;
|
|
||||||
Player.gainMoney(this.getCycleDividends(), "corporation");
|
Player.gainMoney(this.getCycleDividends(), "corporation");
|
||||||
this.addFunds(retainedEarnings);
|
this.loseFunds(totalDividends, "dividends");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
this.addFunds(cycleProfit);
|
|
||||||
}
|
}
|
||||||
this.updateTotalAssets();
|
this.updateTotalAssets();
|
||||||
this.cycleValuation = this.determineCycleValuation();
|
this.cycleValuation = this.determineCycleValuation();
|
||||||
@@ -209,7 +211,7 @@ export class Corporation {
|
|||||||
val += assetDelta * 315e3;
|
val += assetDelta * 315e3;
|
||||||
}
|
}
|
||||||
val *= Math.pow(1.1, this.divisions.size);
|
val *= Math.pow(1.1, this.divisions.size);
|
||||||
val -= val % 1e6; //Round down to nearest millionth
|
val -= val % 1e6; //Round down to nearest million
|
||||||
}
|
}
|
||||||
if (val < 10e9) val = 10e9; // Base valuation
|
if (val < 10e9) val = 10e9; // Base valuation
|
||||||
return val * currentNodeMults.CorporationValuation;
|
return val * currentNodeMults.CorporationValuation;
|
||||||
@@ -226,7 +228,7 @@ export class Corporation {
|
|||||||
updateTotalAssets(): void {
|
updateTotalAssets(): void {
|
||||||
let assets = this.funds;
|
let assets = this.funds;
|
||||||
this.divisions.forEach((ind) => {
|
this.divisions.forEach((ind) => {
|
||||||
assets += IndustriesData[ind.type].startingCost;
|
assets += ind.calculateRecoupableValue();
|
||||||
for (const warehouse of getRecordValues(ind.warehouses)) {
|
for (const warehouse of getRecordValues(ind.warehouses)) {
|
||||||
for (const mat of getRecordValues(warehouse.materials)) {
|
for (const mat of getRecordValues(warehouse.materials)) {
|
||||||
assets += mat.stored * mat.averagePrice;
|
assets += mat.stored * mat.averagePrice;
|
||||||
@@ -367,7 +369,7 @@ export class Corporation {
|
|||||||
if (this.unlocks.has(unlockName)) return `The corporation has already unlocked ${unlockName}`;
|
if (this.unlocks.has(unlockName)) return `The corporation has already unlocked ${unlockName}`;
|
||||||
const price = CorpUnlocks[unlockName].price;
|
const price = CorpUnlocks[unlockName].price;
|
||||||
if (this.funds < price) return `Insufficient funds to purchase ${unlockName}, requires ${formatMoney(price)}`;
|
if (this.funds < price) return `Insufficient funds to purchase ${unlockName}, requires ${formatMoney(price)}`;
|
||||||
this.addNonIncomeFunds(-price);
|
this.loseFunds(price, "upgrades");
|
||||||
this.unlocks.add(unlockName);
|
this.unlocks.add(unlockName);
|
||||||
|
|
||||||
// Apply effects for one-time unlocks
|
// Apply effects for one-time unlocks
|
||||||
@@ -384,7 +386,7 @@ export class Corporation {
|
|||||||
const upgrade = CorpUpgrades[upgradeName];
|
const upgrade = CorpUpgrades[upgradeName];
|
||||||
const totalCost = calculateUpgradeCost(this, upgrade, amount);
|
const totalCost = calculateUpgradeCost(this, upgrade, amount);
|
||||||
if (this.funds < totalCost) return `Not enough funds to purchase ${amount} of upgrade ${upgradeName}.`;
|
if (this.funds < totalCost) return `Not enough funds to purchase ${amount} of upgrade ${upgradeName}.`;
|
||||||
this.addNonIncomeFunds(-totalCost);
|
this.loseFunds(totalCost, "upgrades");
|
||||||
this.upgrades[upgradeName].level += amount;
|
this.upgrades[upgradeName].level += amount;
|
||||||
this.upgrades[upgradeName].value += upgrade.benefit * amount;
|
this.upgrades[upgradeName].value += upgrade.benefit * amount;
|
||||||
|
|
||||||
|
|||||||
@@ -133,6 +133,17 @@ export class Division {
|
|||||||
multSum < 1 ? (this.productionMult = 1) : (this.productionMult = multSum);
|
multSum < 1 ? (this.productionMult = 1) : (this.productionMult = multSum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calculateRecoupableValue(): number {
|
||||||
|
let price = this.startingCost;
|
||||||
|
for (const city of getRecordKeys(this.offices)) {
|
||||||
|
if (city === CityName.Sector12) continue;
|
||||||
|
price += corpConstants.officeInitialCost;
|
||||||
|
if (this.warehouses[city]) price += corpConstants.warehouseInitialCost;
|
||||||
|
}
|
||||||
|
price /= 2;
|
||||||
|
return price;
|
||||||
|
}
|
||||||
|
|
||||||
updateWarehouseSizeUsed(warehouse: Warehouse): void {
|
updateWarehouseSizeUsed(warehouse: Warehouse): void {
|
||||||
warehouse.updateMaterialSizeUsed();
|
warehouse.updateMaterialSizeUsed();
|
||||||
|
|
||||||
@@ -946,6 +957,7 @@ export class Division {
|
|||||||
console.error(`Invalid State: ${state}`);
|
console.error(`Invalid State: ${state}`);
|
||||||
break;
|
break;
|
||||||
} //End switch(this.state)
|
} //End switch(this.state)
|
||||||
|
this.updateWarehouseSizeUsed(warehouse);
|
||||||
}
|
}
|
||||||
return totalProfit;
|
return totalProfit;
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user