diff --git a/markdown/bitburner.backdoorrequirement.md b/markdown/bitburner.backdoorrequirement.md new file mode 100644 index 000000000..787b1e2cc --- /dev/null +++ b/markdown/bitburner.backdoorrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.backdoorrequirement.server.md b/markdown/bitburner.backdoorrequirement.server.md new file mode 100644 index 000000000..3b23ccf39 --- /dev/null +++ b/markdown/bitburner.backdoorrequirement.server.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [BackdoorRequirement](./bitburner.backdoorrequirement.md) > [server](./bitburner.backdoorrequirement.server.md) + +## BackdoorRequirement.server property + +**Signature:** + +```typescript +server: string; +``` diff --git a/markdown/bitburner.backdoorrequirement.type.md b/markdown/bitburner.backdoorrequirement.type.md new file mode 100644 index 000000000..e23d9cde3 --- /dev/null +++ b/markdown/bitburner.backdoorrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [BackdoorRequirement](./bitburner.backdoorrequirement.md) > [type](./bitburner.backdoorrequirement.type.md) + +## BackdoorRequirement.type property + +**Signature:** + +```typescript +type: "backdoorInstalled"; +``` diff --git a/markdown/bitburner.bitnoderequirement.bitnoden.md b/markdown/bitburner.bitnoderequirement.bitnoden.md new file mode 100644 index 000000000..dcae449c4 --- /dev/null +++ b/markdown/bitburner.bitnoderequirement.bitnoden.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [BitNodeRequirement](./bitburner.bitnoderequirement.md) > [bitNodeN](./bitburner.bitnoderequirement.bitnoden.md) + +## BitNodeRequirement.bitNodeN property + +**Signature:** + +```typescript +bitNodeN: number; +``` diff --git a/markdown/bitburner.bitnoderequirement.md b/markdown/bitburner.bitnoderequirement.md new file mode 100644 index 000000000..23042806d --- /dev/null +++ b/markdown/bitburner.bitnoderequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.bitnoderequirement.type.md b/markdown/bitburner.bitnoderequirement.type.md new file mode 100644 index 000000000..801880795 --- /dev/null +++ b/markdown/bitburner.bitnoderequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [BitNodeRequirement](./bitburner.bitnoderequirement.md) > [type](./bitburner.bitnoderequirement.type.md) + +## BitNodeRequirement.type property + +**Signature:** + +```typescript +type: "bitNodeN"; +``` diff --git a/markdown/bitburner.bladeburnerrankrequirement.bladeburnerrank.md b/markdown/bitburner.bladeburnerrankrequirement.bladeburnerrank.md new file mode 100644 index 000000000..7866dfe53 --- /dev/null +++ b/markdown/bitburner.bladeburnerrankrequirement.bladeburnerrank.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md) > [bladeburnerRank](./bitburner.bladeburnerrankrequirement.bladeburnerrank.md) + +## BladeburnerRankRequirement.bladeburnerRank property + +**Signature:** + +```typescript +bladeburnerRank: number; +``` diff --git a/markdown/bitburner.bladeburnerrankrequirement.md b/markdown/bitburner.bladeburnerrankrequirement.md new file mode 100644 index 000000000..3bf96e7dc --- /dev/null +++ b/markdown/bitburner.bladeburnerrankrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.bladeburnerrankrequirement.type.md b/markdown/bitburner.bladeburnerrankrequirement.type.md new file mode 100644 index 000000000..300697614 --- /dev/null +++ b/markdown/bitburner.bladeburnerrankrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [BladeburnerRankRequirement](./bitburner.bladeburnerrankrequirement.md) > [type](./bitburner.bladeburnerrankrequirement.type.md) + +## BladeburnerRankRequirement.type property + +**Signature:** + +```typescript +type: "bladeburnerRank"; +``` diff --git a/markdown/bitburner.cityrequirement.city.md b/markdown/bitburner.cityrequirement.city.md new file mode 100644 index 000000000..ad73f91ee --- /dev/null +++ b/markdown/bitburner.cityrequirement.city.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [CityRequirement](./bitburner.cityrequirement.md) > [city](./bitburner.cityrequirement.city.md) + +## CityRequirement.city property + +**Signature:** + +```typescript +city: CityName; +``` diff --git a/markdown/bitburner.cityrequirement.md b/markdown/bitburner.cityrequirement.md new file mode 100644 index 000000000..d74db0fd4 --- /dev/null +++ b/markdown/bitburner.cityrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.cityrequirement.type.md b/markdown/bitburner.cityrequirement.type.md new file mode 100644 index 000000000..fd5da206c --- /dev/null +++ b/markdown/bitburner.cityrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [CityRequirement](./bitburner.cityrequirement.md) > [type](./bitburner.cityrequirement.type.md) + +## CityRequirement.type property + +**Signature:** + +```typescript +type: "city"; +``` diff --git a/markdown/bitburner.companyreputationrequirement.company.md b/markdown/bitburner.companyreputationrequirement.company.md new file mode 100644 index 000000000..fcbe1b40b --- /dev/null +++ b/markdown/bitburner.companyreputationrequirement.company.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) > [company](./bitburner.companyreputationrequirement.company.md) + +## CompanyReputationRequirement.company property + +**Signature:** + +```typescript +company: CompanyName; +``` diff --git a/markdown/bitburner.companyreputationrequirement.md b/markdown/bitburner.companyreputationrequirement.md new file mode 100644 index 000000000..3b820897d --- /dev/null +++ b/markdown/bitburner.companyreputationrequirement.md @@ -0,0 +1,22 @@ + + +[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" | | + diff --git a/markdown/bitburner.companyreputationrequirement.reputation.md b/markdown/bitburner.companyreputationrequirement.reputation.md new file mode 100644 index 000000000..10911a174 --- /dev/null +++ b/markdown/bitburner.companyreputationrequirement.reputation.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) > [reputation](./bitburner.companyreputationrequirement.reputation.md) + +## CompanyReputationRequirement.reputation property + +**Signature:** + +```typescript +reputation: number; +``` diff --git a/markdown/bitburner.companyreputationrequirement.type.md b/markdown/bitburner.companyreputationrequirement.type.md new file mode 100644 index 000000000..3c364910b --- /dev/null +++ b/markdown/bitburner.companyreputationrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyReputationRequirement](./bitburner.companyreputationrequirement.md) > [type](./bitburner.companyreputationrequirement.type.md) + +## CompanyReputationRequirement.type property + +**Signature:** + +```typescript +type: "companyReputation"; +``` diff --git a/markdown/bitburner.employedbyrequirement.company.md b/markdown/bitburner.employedbyrequirement.company.md new file mode 100644 index 000000000..26ea650b8 --- /dev/null +++ b/markdown/bitburner.employedbyrequirement.company.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [EmployedByRequirement](./bitburner.employedbyrequirement.md) > [company](./bitburner.employedbyrequirement.company.md) + +## EmployedByRequirement.company property + +**Signature:** + +```typescript +company: CompanyName; +``` diff --git a/markdown/bitburner.employedbyrequirement.md b/markdown/bitburner.employedbyrequirement.md new file mode 100644 index 000000000..eec703bee --- /dev/null +++ b/markdown/bitburner.employedbyrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.employedbyrequirement.type.md b/markdown/bitburner.employedbyrequirement.type.md new file mode 100644 index 000000000..6ac2212ab --- /dev/null +++ b/markdown/bitburner.employedbyrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [EmployedByRequirement](./bitburner.employedbyrequirement.md) > [type](./bitburner.employedbyrequirement.type.md) + +## EmployedByRequirement.type property + +**Signature:** + +```typescript +type: "employedBy"; +``` diff --git a/markdown/bitburner.everyrequirement.conditions.md b/markdown/bitburner.everyrequirement.conditions.md new file mode 100644 index 000000000..34ec59c5a --- /dev/null +++ b/markdown/bitburner.everyrequirement.conditions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [EveryRequirement](./bitburner.everyrequirement.md) > [conditions](./bitburner.everyrequirement.conditions.md) + +## EveryRequirement.conditions property + +**Signature:** + +```typescript +conditions: PlayerRequirement[]; +``` diff --git a/markdown/bitburner.everyrequirement.md b/markdown/bitburner.everyrequirement.md new file mode 100644 index 000000000..691e075d2 --- /dev/null +++ b/markdown/bitburner.everyrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.everyrequirement.type.md b/markdown/bitburner.everyrequirement.type.md new file mode 100644 index 000000000..852bc96aa --- /dev/null +++ b/markdown/bitburner.everyrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [EveryRequirement](./bitburner.everyrequirement.md) > [type](./bitburner.everyrequirement.type.md) + +## EveryRequirement.type property + +**Signature:** + +```typescript +type: "everyCondition"; +``` diff --git a/markdown/bitburner.filerequirement.file.md b/markdown/bitburner.filerequirement.file.md new file mode 100644 index 000000000..c0db58721 --- /dev/null +++ b/markdown/bitburner.filerequirement.file.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [FileRequirement](./bitburner.filerequirement.md) > [file](./bitburner.filerequirement.file.md) + +## FileRequirement.file property + +**Signature:** + +```typescript +file: string; +``` diff --git a/markdown/bitburner.filerequirement.md b/markdown/bitburner.filerequirement.md new file mode 100644 index 000000000..12173edd4 --- /dev/null +++ b/markdown/bitburner.filerequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.filerequirement.type.md b/markdown/bitburner.filerequirement.type.md new file mode 100644 index 000000000..c48db6854 --- /dev/null +++ b/markdown/bitburner.filerequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [FileRequirement](./bitburner.filerequirement.md) > [type](./bitburner.filerequirement.type.md) + +## FileRequirement.type property + +**Signature:** + +```typescript +type: "file"; +``` diff --git a/markdown/bitburner.hacknetcoresrequirement.hacknetcores.md b/markdown/bitburner.hacknetcoresrequirement.hacknetcores.md new file mode 100644 index 000000000..85a4c3b6e --- /dev/null +++ b/markdown/bitburner.hacknetcoresrequirement.hacknetcores.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md) > [hacknetCores](./bitburner.hacknetcoresrequirement.hacknetcores.md) + +## HacknetCoresRequirement.hacknetCores property + +**Signature:** + +```typescript +hacknetCores: number; +``` diff --git a/markdown/bitburner.hacknetcoresrequirement.md b/markdown/bitburner.hacknetcoresrequirement.md new file mode 100644 index 000000000..5a77c4b2e --- /dev/null +++ b/markdown/bitburner.hacknetcoresrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.hacknetcoresrequirement.type.md b/markdown/bitburner.hacknetcoresrequirement.type.md new file mode 100644 index 000000000..71df776d4 --- /dev/null +++ b/markdown/bitburner.hacknetcoresrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetCoresRequirement](./bitburner.hacknetcoresrequirement.md) > [type](./bitburner.hacknetcoresrequirement.type.md) + +## HacknetCoresRequirement.type property + +**Signature:** + +```typescript +type: "hacknetCores"; +``` diff --git a/markdown/bitburner.hacknetlevelsrequirement.hacknetlevels.md b/markdown/bitburner.hacknetlevelsrequirement.hacknetlevels.md new file mode 100644 index 000000000..25e9bf50b --- /dev/null +++ b/markdown/bitburner.hacknetlevelsrequirement.hacknetlevels.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md) > [hacknetLevels](./bitburner.hacknetlevelsrequirement.hacknetlevels.md) + +## HacknetLevelsRequirement.hacknetLevels property + +**Signature:** + +```typescript +hacknetLevels: number; +``` diff --git a/markdown/bitburner.hacknetlevelsrequirement.md b/markdown/bitburner.hacknetlevelsrequirement.md new file mode 100644 index 000000000..181897204 --- /dev/null +++ b/markdown/bitburner.hacknetlevelsrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.hacknetlevelsrequirement.type.md b/markdown/bitburner.hacknetlevelsrequirement.type.md new file mode 100644 index 000000000..9d6198dad --- /dev/null +++ b/markdown/bitburner.hacknetlevelsrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetLevelsRequirement](./bitburner.hacknetlevelsrequirement.md) > [type](./bitburner.hacknetlevelsrequirement.type.md) + +## HacknetLevelsRequirement.type property + +**Signature:** + +```typescript +type: "hacknetLevels"; +``` diff --git a/markdown/bitburner.hacknetramrequirement.hacknetram.md b/markdown/bitburner.hacknetramrequirement.hacknetram.md new file mode 100644 index 000000000..1a829cedc --- /dev/null +++ b/markdown/bitburner.hacknetramrequirement.hacknetram.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md) > [hacknetRAM](./bitburner.hacknetramrequirement.hacknetram.md) + +## HacknetRAMRequirement.hacknetRAM property + +**Signature:** + +```typescript +hacknetRAM: number; +``` diff --git a/markdown/bitburner.hacknetramrequirement.md b/markdown/bitburner.hacknetramrequirement.md new file mode 100644 index 000000000..c03e53acb --- /dev/null +++ b/markdown/bitburner.hacknetramrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.hacknetramrequirement.type.md b/markdown/bitburner.hacknetramrequirement.type.md new file mode 100644 index 000000000..8f755c004 --- /dev/null +++ b/markdown/bitburner.hacknetramrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [HacknetRAMRequirement](./bitburner.hacknetramrequirement.md) > [type](./bitburner.hacknetramrequirement.type.md) + +## HacknetRAMRequirement.type property + +**Signature:** + +```typescript +type: "hacknetRAM"; +``` diff --git a/markdown/bitburner.jobtitlerequirement.jobtitle.md b/markdown/bitburner.jobtitlerequirement.jobtitle.md new file mode 100644 index 000000000..0fb1b1d06 --- /dev/null +++ b/markdown/bitburner.jobtitlerequirement.jobtitle.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [JobTitleRequirement](./bitburner.jobtitlerequirement.md) > [jobTitle](./bitburner.jobtitlerequirement.jobtitle.md) + +## JobTitleRequirement.jobTitle property + +**Signature:** + +```typescript +jobTitle: JobName; +``` diff --git a/markdown/bitburner.jobtitlerequirement.md b/markdown/bitburner.jobtitlerequirement.md new file mode 100644 index 000000000..35fd0cfab --- /dev/null +++ b/markdown/bitburner.jobtitlerequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.jobtitlerequirement.type.md b/markdown/bitburner.jobtitlerequirement.type.md new file mode 100644 index 000000000..ffe1c773b --- /dev/null +++ b/markdown/bitburner.jobtitlerequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [JobTitleRequirement](./bitburner.jobtitlerequirement.md) > [type](./bitburner.jobtitlerequirement.type.md) + +## JobTitleRequirement.type property + +**Signature:** + +```typescript +type: "jobTitle"; +``` diff --git a/markdown/bitburner.karmarequiremennt.karma.md b/markdown/bitburner.karmarequiremennt.karma.md new file mode 100644 index 000000000..762e2659c --- /dev/null +++ b/markdown/bitburner.karmarequiremennt.karma.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [KarmaRequiremennt](./bitburner.karmarequiremennt.md) > [karma](./bitburner.karmarequiremennt.karma.md) + +## KarmaRequiremennt.karma property + +**Signature:** + +```typescript +karma: number; +``` diff --git a/markdown/bitburner.karmarequiremennt.md b/markdown/bitburner.karmarequiremennt.md new file mode 100644 index 000000000..a965e67ad --- /dev/null +++ b/markdown/bitburner.karmarequiremennt.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.karmarequiremennt.type.md b/markdown/bitburner.karmarequiremennt.type.md new file mode 100644 index 000000000..cffc7f71a --- /dev/null +++ b/markdown/bitburner.karmarequiremennt.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [KarmaRequiremennt](./bitburner.karmarequiremennt.md) > [type](./bitburner.karmarequiremennt.type.md) + +## KarmaRequiremennt.type property + +**Signature:** + +```typescript +type: "karma"; +``` diff --git a/markdown/bitburner.locationrequirement.location.md b/markdown/bitburner.locationrequirement.location.md new file mode 100644 index 000000000..ce6200f5b --- /dev/null +++ b/markdown/bitburner.locationrequirement.location.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [LocationRequirement](./bitburner.locationrequirement.md) > [location](./bitburner.locationrequirement.location.md) + +## LocationRequirement.location property + +**Signature:** + +```typescript +location: LocationName; +``` diff --git a/markdown/bitburner.locationrequirement.md b/markdown/bitburner.locationrequirement.md new file mode 100644 index 000000000..8d33ec88b --- /dev/null +++ b/markdown/bitburner.locationrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.locationrequirement.type.md b/markdown/bitburner.locationrequirement.type.md new file mode 100644 index 000000000..4ca739a1e --- /dev/null +++ b/markdown/bitburner.locationrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [LocationRequirement](./bitburner.locationrequirement.md) > [type](./bitburner.locationrequirement.type.md) + +## LocationRequirement.type property + +**Signature:** + +```typescript +type: "location"; +``` diff --git a/markdown/bitburner.md b/markdown/bitburner.md index 6ae71ba46..03d0795c4 100644 --- a/markdown/bitburner.md +++ b/markdown/bitburner.md @@ -28,12 +28,17 @@ | [ActiveFragment](./bitburner.activefragment.md) | | | [AugmentPair](./bitburner.augmentpair.md) | Return value of [getSleevePurchasableAugs](./bitburner.sleeve.getsleevepurchasableaugs.md) | | [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). | | [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 | | [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 | | [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 | | [CorpIndustryData](./bitburner.corpindustrydata.md) | Data for an individual industry | | [CorpMaterialConstantData](./bitburner.corpmaterialconstantdata.md) | Corporation material information | @@ -42,8 +47,11 @@ | [CorpProductData](./bitburner.corpproductdata.md) | Product rating information | | [CrimeStats](./bitburner.crimestats.md) | Data representing the internal values of a crime. | | [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. | +| [EveryRequirement](./bitburner.everyrequirement.md) | All sub-conditions must be satisfied. | | [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 | | [Fragment](./bitburner.fragment.md) | | | [GameInfo](./bitburner.gameinfo.md) | Game Information | @@ -60,9 +68,12 @@ | [HackingFormulas](./bitburner.hackingformulas.md) | Hacking formulas | | [HackingMultipliers](./bitburner.hackingmultipliers.md) | Hack related multipliers. | | [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. | | [HacknetNodeConstants](./bitburner.hacknetnodeconstants.md) | Hacknet node related constants | | [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 | | [HacknetServersFormulas](./bitburner.hacknetserversformulas.md) | Hacknet Server formulas | | [HP](./bitburner.hp.md) | | @@ -73,15 +84,23 @@ | [InfiltrationReward](./bitburner.infiltrationreward.md) | | | [InvestmentOffer](./bitburner.investmentoffer.md) | Corporation investment offer | | [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 | +| [MoneyRequirement](./bitburner.moneyrequirement.md) | Player must have at least this much money. | | [MoneySource](./bitburner.moneysource.md) | | | [MoneySources](./bitburner.moneysources.md) | | | [Multipliers](./bitburner.multipliers.md) | | | [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. | +| [NotRequirement](./bitburner.notrequirement.md) | The sub-condition must not be satisfied. | | [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. | | [OfficeAPI](./bitburner.officeapi.md) | Corporation Office API | +| [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md) | Player must have killed at least this many people. | | [Person](./bitburner.person.md) | | | [Player](./bitburner.player.md) | | | [ProcessInfo](./bitburner.processinfo.md) | A single process on a server. | @@ -94,11 +113,14 @@ | [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. | | [Singularity](./bitburner.singularity.md) | Singularity API | +| [SkillRequirement](./bitburner.skillrequirement.md) | Player must have each listed skill at least this level. | | [Skills](./bitburner.skills.md) | | | [SkillsFormulas](./bitburner.skillsformulas.md) | Skills formulas | | [Sleeve](./bitburner.sleeve.md) | Sleeve API | | [SleevePerson](./bitburner.sleeveperson.md) | | +| [SomeRequirement](./bitburner.somerequirement.md) | At least one sub-condition must be satisfied. | | [SourceFileLvl](./bitburner.sourcefilelvl.md) | | +| [SourceFileRequirement](./bitburner.sourcefilerequirement.md) | Player must have this Source File. | | [SpawnOptions](./bitburner.spawnoptions.md) | | | [Stanek](./bitburner.stanek.md) | Stanek's Gift API. | | [StockMarketConstants](./bitburner.stockmarketconstants.md) | Constants used for the stockmarket game mechanic. | @@ -128,6 +150,7 @@ | [CorpUpgradeName](./bitburner.corpupgradename.md) | | | [FilenameOrPID](./bitburner.filenameorpid.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) | | | [ReactNode](./bitburner.reactnode.md) |

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.

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.

| | [ScriptArg](./bitburner.scriptarg.md) | | diff --git a/markdown/bitburner.moneyrequirement.md b/markdown/bitburner.moneyrequirement.md new file mode 100644 index 000000000..591c61aec --- /dev/null +++ b/markdown/bitburner.moneyrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.moneyrequirement.money.md b/markdown/bitburner.moneyrequirement.money.md new file mode 100644 index 000000000..b5150d99b --- /dev/null +++ b/markdown/bitburner.moneyrequirement.money.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [MoneyRequirement](./bitburner.moneyrequirement.md) > [money](./bitburner.moneyrequirement.money.md) + +## MoneyRequirement.money property + +**Signature:** + +```typescript +money: number; +``` diff --git a/markdown/bitburner.moneyrequirement.type.md b/markdown/bitburner.moneyrequirement.type.md new file mode 100644 index 000000000..417bb12b1 --- /dev/null +++ b/markdown/bitburner.moneyrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [MoneyRequirement](./bitburner.moneyrequirement.md) > [type](./bitburner.moneyrequirement.type.md) + +## MoneyRequirement.type property + +**Signature:** + +```typescript +type: "money"; +``` diff --git a/markdown/bitburner.notrequirement.condition.md b/markdown/bitburner.notrequirement.condition.md new file mode 100644 index 000000000..9f70fcd7f --- /dev/null +++ b/markdown/bitburner.notrequirement.condition.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [NotRequirement](./bitburner.notrequirement.md) > [condition](./bitburner.notrequirement.condition.md) + +## NotRequirement.condition property + +**Signature:** + +```typescript +condition: PlayerRequirement; +``` diff --git a/markdown/bitburner.notrequirement.md b/markdown/bitburner.notrequirement.md new file mode 100644 index 000000000..bb5aa6fbf --- /dev/null +++ b/markdown/bitburner.notrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.notrequirement.type.md b/markdown/bitburner.notrequirement.type.md new file mode 100644 index 000000000..437c84015 --- /dev/null +++ b/markdown/bitburner.notrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [NotRequirement](./bitburner.notrequirement.md) > [type](./bitburner.notrequirement.type.md) + +## NotRequirement.type property + +**Signature:** + +```typescript +type: "not"; +``` diff --git a/markdown/bitburner.numaugmentationsrequirement.md b/markdown/bitburner.numaugmentationsrequirement.md new file mode 100644 index 000000000..3295388fc --- /dev/null +++ b/markdown/bitburner.numaugmentationsrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.numaugmentationsrequirement.numaugmentations.md b/markdown/bitburner.numaugmentationsrequirement.numaugmentations.md new file mode 100644 index 000000000..bbd7690dd --- /dev/null +++ b/markdown/bitburner.numaugmentationsrequirement.numaugmentations.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md) > [numAugmentations](./bitburner.numaugmentationsrequirement.numaugmentations.md) + +## NumAugmentationsRequirement.numAugmentations property + +**Signature:** + +```typescript +numAugmentations: number; +``` diff --git a/markdown/bitburner.numaugmentationsrequirement.type.md b/markdown/bitburner.numaugmentationsrequirement.type.md new file mode 100644 index 000000000..1dd1403f3 --- /dev/null +++ b/markdown/bitburner.numaugmentationsrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [NumAugmentationsRequirement](./bitburner.numaugmentationsrequirement.md) > [type](./bitburner.numaugmentationsrequirement.type.md) + +## NumAugmentationsRequirement.type property + +**Signature:** + +```typescript +type: "numAugmentations"; +``` diff --git a/markdown/bitburner.numinfiltrationsrequirement.md b/markdown/bitburner.numinfiltrationsrequirement.md new file mode 100644 index 000000000..94160d9b9 --- /dev/null +++ b/markdown/bitburner.numinfiltrationsrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.numinfiltrationsrequirement.numinfiltrations.md b/markdown/bitburner.numinfiltrationsrequirement.numinfiltrations.md new file mode 100644 index 000000000..046841cb1 --- /dev/null +++ b/markdown/bitburner.numinfiltrationsrequirement.numinfiltrations.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md) > [numInfiltrations](./bitburner.numinfiltrationsrequirement.numinfiltrations.md) + +## NumInfiltrationsRequirement.numInfiltrations property + +**Signature:** + +```typescript +numInfiltrations: number; +``` diff --git a/markdown/bitburner.numinfiltrationsrequirement.type.md b/markdown/bitburner.numinfiltrationsrequirement.type.md new file mode 100644 index 000000000..c4dd727a6 --- /dev/null +++ b/markdown/bitburner.numinfiltrationsrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [NumInfiltrationsRequirement](./bitburner.numinfiltrationsrequirement.md) > [type](./bitburner.numinfiltrationsrequirement.type.md) + +## NumInfiltrationsRequirement.type property + +**Signature:** + +```typescript +type: "numInfiltrations"; +``` diff --git a/markdown/bitburner.peoplekilledrequirement.md b/markdown/bitburner.peoplekilledrequirement.md new file mode 100644 index 000000000..4b6f67ee3 --- /dev/null +++ b/markdown/bitburner.peoplekilledrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.peoplekilledrequirement.numpeoplekilled.md b/markdown/bitburner.peoplekilledrequirement.numpeoplekilled.md new file mode 100644 index 000000000..ed51b742f --- /dev/null +++ b/markdown/bitburner.peoplekilledrequirement.numpeoplekilled.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md) > [numPeopleKilled](./bitburner.peoplekilledrequirement.numpeoplekilled.md) + +## PeopleKilledRequirement.numPeopleKilled property + +**Signature:** + +```typescript +numPeopleKilled: number; +``` diff --git a/markdown/bitburner.peoplekilledrequirement.type.md b/markdown/bitburner.peoplekilledrequirement.type.md new file mode 100644 index 000000000..ed74a2e0e --- /dev/null +++ b/markdown/bitburner.peoplekilledrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [PeopleKilledRequirement](./bitburner.peoplekilledrequirement.md) > [type](./bitburner.peoplekilledrequirement.type.md) + +## PeopleKilledRequirement.type property + +**Signature:** + +```typescript +type: "numPeopleKilled"; +``` diff --git a/markdown/bitburner.playerrequirement.md b/markdown/bitburner.playerrequirement.md new file mode 100644 index 000000000..f5f7ff8c2 --- /dev/null +++ b/markdown/bitburner.playerrequirement.md @@ -0,0 +1,37 @@ + + +[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) + diff --git a/markdown/bitburner.singularity.getfactioninviterequirements.md b/markdown/bitburner.singularity.getfactioninviterequirements.md new file mode 100644 index 000000000..a89111729 --- /dev/null +++ b/markdown/bitburner.singularity.getfactioninviterequirements.md @@ -0,0 +1,56 @@ + + +[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 } +] +``` + diff --git a/markdown/bitburner.singularity.md b/markdown/bitburner.singularity.md index 4f7faf82e..75579c6ec 100644 --- a/markdown/bitburner.singularity.md +++ b/markdown/bitburner.singularity.md @@ -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. | | [getFactionFavor(faction)](./bitburner.singularity.getfactionfavor.md) | Get faction favor. | | [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. | | [getOwnedAugmentations(purchased)](./bitburner.singularity.getownedaugmentations.md) | Get a list of owned augmentation. | | [getOwnedSourceFiles()](./bitburner.singularity.getownedsourcefiles.md) | Get a list of acquired Source-Files. | diff --git a/markdown/bitburner.skillrequirement.md b/markdown/bitburner.skillrequirement.md new file mode 100644 index 000000000..4824ffcb3 --- /dev/null +++ b/markdown/bitburner.skillrequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.skillrequirement.skills.md b/markdown/bitburner.skillrequirement.skills.md new file mode 100644 index 000000000..81b3faa4b --- /dev/null +++ b/markdown/bitburner.skillrequirement.skills.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SkillRequirement](./bitburner.skillrequirement.md) > [skills](./bitburner.skillrequirement.skills.md) + +## SkillRequirement.skills property + +**Signature:** + +```typescript +skills: Partial; +``` diff --git a/markdown/bitburner.skillrequirement.type.md b/markdown/bitburner.skillrequirement.type.md new file mode 100644 index 000000000..7904b06bb --- /dev/null +++ b/markdown/bitburner.skillrequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SkillRequirement](./bitburner.skillrequirement.md) > [type](./bitburner.skillrequirement.type.md) + +## SkillRequirement.type property + +**Signature:** + +```typescript +type: "skills"; +``` diff --git a/markdown/bitburner.somerequirement.conditions.md b/markdown/bitburner.somerequirement.conditions.md new file mode 100644 index 000000000..4644598b0 --- /dev/null +++ b/markdown/bitburner.somerequirement.conditions.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SomeRequirement](./bitburner.somerequirement.md) > [conditions](./bitburner.somerequirement.conditions.md) + +## SomeRequirement.conditions property + +**Signature:** + +```typescript +conditions: PlayerRequirement[]; +``` diff --git a/markdown/bitburner.somerequirement.md b/markdown/bitburner.somerequirement.md new file mode 100644 index 000000000..d8029532b --- /dev/null +++ b/markdown/bitburner.somerequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.somerequirement.type.md b/markdown/bitburner.somerequirement.type.md new file mode 100644 index 000000000..f90b12152 --- /dev/null +++ b/markdown/bitburner.somerequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SomeRequirement](./bitburner.somerequirement.md) > [type](./bitburner.somerequirement.type.md) + +## SomeRequirement.type property + +**Signature:** + +```typescript +type: "someCondition"; +``` diff --git a/markdown/bitburner.sourcefilerequirement.md b/markdown/bitburner.sourcefilerequirement.md new file mode 100644 index 000000000..2b7daaad4 --- /dev/null +++ b/markdown/bitburner.sourcefilerequirement.md @@ -0,0 +1,21 @@ + + +[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" | | + diff --git a/markdown/bitburner.sourcefilerequirement.sourcefile.md b/markdown/bitburner.sourcefilerequirement.sourcefile.md new file mode 100644 index 000000000..6dd3723fa --- /dev/null +++ b/markdown/bitburner.sourcefilerequirement.sourcefile.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SourceFileRequirement](./bitburner.sourcefilerequirement.md) > [sourceFile](./bitburner.sourcefilerequirement.sourcefile.md) + +## SourceFileRequirement.sourceFile property + +**Signature:** + +```typescript +sourceFile: number; +``` diff --git a/markdown/bitburner.sourcefilerequirement.type.md b/markdown/bitburner.sourcefilerequirement.type.md new file mode 100644 index 000000000..4a0c6890f --- /dev/null +++ b/markdown/bitburner.sourcefilerequirement.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SourceFileRequirement](./bitburner.sourcefilerequirement.md) > [type](./bitburner.sourcefilerequirement.type.md) + +## SourceFileRequirement.type property + +**Signature:** + +```typescript +type: "sourceFile"; +``` diff --git a/src/Faction/FactionInfo.tsx b/src/Faction/FactionInfo.tsx index 12568c233..4052948a4 100644 --- a/src/Faction/FactionInfo.tsx +++ b/src/Faction/FactionInfo.tsx @@ -1,16 +1,18 @@ import React from "react"; -import { FactionName, CompanyName, CityName, LiteratureName, MessageFilename } from "@enums"; +import { FactionName, CompanyName, CityName, LiteratureName, MessageFilename, LocationName } from "@enums"; import { currentNodeMults } from "../BitNode/BitNodeMultipliers"; import { Router } from "../ui/GameRoot"; import { Page } from "../ui/Router"; import { Option } from "./ui/Option"; import { Typography } from "@mui/material"; import { - JoinCondition, + PlayerCondition, + CompoundPlayerCondition, haveBackdooredServer, employedBy, + haveCompanyRep, executiveEmployee, - notEmployee, + notEmployedBy, haveAugmentations, haveMoney, haveSkill, @@ -18,13 +20,18 @@ import { haveKarma, haveKilledPeople, locatedInCity, + locatedInSomeCity, totalHacknetRam, totalHacknetCores, totalHacknetLevels, haveBladeburnerRank, haveSourceFile, + haveSomeSourceFile, haveFile, someCondition, + everyCondition, + delayedCondition, + unsatisfiable, } from "./FactionJoinCondition"; import { SpecialServers } from "../Server/data/SpecialServers"; import { CONSTANTS } from "../Constants"; @@ -34,8 +41,8 @@ import type { PlayerObject } from "../PersonObjects/Player/PlayerObject"; interface FactionInfoParams { infoText?: JSX.Element; rumorText?: JSX.Element; - inviteReqs?: JoinCondition[]; - rumorReqs?: JoinCondition[]; + inviteReqs?: PlayerCondition[]; + rumorReqs?: PlayerCondition[]; enemies?: FactionName[]; offerHackingWork?: boolean; offerFieldWork?: boolean; @@ -57,10 +64,10 @@ export class FactionInfo { rumorText: JSX.Element; /** Conditions for being automatically inivited to this facton. */ - inviteReqs: JoinCondition[]; + inviteReqs: CompoundPlayerCondition; /** Conditions for automatically hearing a rumor about this facton. */ - rumorReqs: JoinCondition[]; + rumorReqs: CompoundPlayerCondition; /** A flag indicating if the faction supports field work to earn reputation. */ offerFieldWork: boolean; @@ -83,8 +90,8 @@ export class FactionInfo { constructor(params: FactionInfoParams) { this.infoText = params.infoText ?? <>; this.rumorText = params.rumorText ?? <>; - this.inviteReqs = params.inviteReqs ?? []; - this.rumorReqs = params.rumorReqs ?? []; + this.inviteReqs = everyCondition(params.inviteReqs ?? [unsatisfiable]); + this.rumorReqs = everyCondition(params.rumorReqs ?? [unsatisfiable]); this.enemies = params.enemies ?? []; this.offerHackingWork = params.offerHackingWork ?? false; this.offerFieldWork = params.offerFieldWork ?? false; @@ -127,9 +134,9 @@ export const FactionInfos: Record = { infoText: <>Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth., rumorText: <>Follow the thread. Take fl1ght., inviteReqs: [ - haveAugmentations(currentNodeMults.DaedalusAugsRequirement), + delayedCondition(() => haveAugmentations(currentNodeMults.DaedalusAugsRequirement)), haveMoney(100e9), - someCondition(haveSkill("hacking", 2500), haveCombatSkills(1500)), + someCondition([haveSkill("hacking", 2500), haveCombatSkills(1500)]), ], rumorReqs: [haveFile(MessageFilename.TruthGazer)], offerHackingWork: true, @@ -168,7 +175,7 @@ export const FactionInfos: Record = { ), rumorText: <>High-ranking employees of {CompanyName.ECorp} can gain access to proprietary hacking augmentations., - inviteReqs: [employedBy(CompanyName.ECorp, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [employedBy(CompanyName.ECorp), haveCompanyRep(CompanyName.ECorp, CONSTANTS.CorpFactionRepRequirement)], rumorReqs: [employedBy(CompanyName.ECorp)], offerHackingWork: true, offerFieldWork: true, @@ -191,7 +198,10 @@ export const FactionInfos: Record = { rumorText: ( <>High-ranking employees of {CompanyName.MegaCorp} can gain access to proprietary biotech augmentations. ), - inviteReqs: [employedBy(CompanyName.MegaCorp, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.MegaCorp), + haveCompanyRep(CompanyName.MegaCorp, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.MegaCorp)], offerHackingWork: true, offerFieldWork: true, @@ -214,7 +224,10 @@ export const FactionInfos: Record = { augmentations. ), - inviteReqs: [employedBy(CompanyName.BachmanAndAssociates, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.BachmanAndAssociates), + haveCompanyRep(CompanyName.BachmanAndAssociates, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.BachmanAndAssociates)], offerHackingWork: true, offerFieldWork: true, @@ -227,7 +240,10 @@ export const FactionInfos: Record = { rumorText: ( <>High-ranking employees of {CompanyName.BladeIndustries} can gain access to proprietary bionic augmentations. ), - inviteReqs: [employedBy(CompanyName.BladeIndustries, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.BladeIndustries), + haveCompanyRep(CompanyName.BladeIndustries, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.BladeIndustries)], offerHackingWork: true, offerFieldWork: true, @@ -244,7 +260,7 @@ export const FactionInfos: Record = { ), rumorText: <>High-ranking employees of {CompanyName.NWO} can gain access to proprietary nanotech augmentations., - inviteReqs: [employedBy(CompanyName.NWO, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [employedBy(CompanyName.NWO), haveCompanyRep(CompanyName.NWO, CONSTANTS.CorpFactionRepRequirement)], rumorReqs: [employedBy(CompanyName.NWO)], offerHackingWork: true, offerFieldWork: true, @@ -260,7 +276,10 @@ export const FactionInfos: Record = { augmentations. ), - inviteReqs: [employedBy(CompanyName.ClarkeIncorporated, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.ClarkeIncorporated), + haveCompanyRep(CompanyName.ClarkeIncorporated, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.ClarkeIncorporated)], offerHackingWork: true, offerFieldWork: true, @@ -276,7 +295,10 @@ export const FactionInfos: Record = { augmentations. ), - inviteReqs: [employedBy(CompanyName.OmniTekIncorporated, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.OmniTekIncorporated), + haveCompanyRep(CompanyName.OmniTekIncorporated, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.OmniTekIncorporated)], offerHackingWork: true, offerFieldWork: true, @@ -294,7 +316,10 @@ export const FactionInfos: Record = { rumorText: ( <>High-ranking employees of {CompanyName.FourSigma} can gain access to a range of versatile augmentations. ), - inviteReqs: [employedBy(CompanyName.FourSigma, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.FourSigma), + haveCompanyRep(CompanyName.FourSigma, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.FourSigma)], offerHackingWork: true, offerFieldWork: true, @@ -310,7 +335,10 @@ export const FactionInfos: Record = { augmentations. ), - inviteReqs: [employedBy(CompanyName.KuaiGongInternational, { withRep: CONSTANTS.CorpFactionRepRequirement })], + inviteReqs: [ + employedBy(CompanyName.KuaiGongInternational), + haveCompanyRep(CompanyName.KuaiGongInternational, CONSTANTS.CorpFactionRepRequirement), + ], rumorReqs: [employedBy(CompanyName.KuaiGongInternational)], offerHackingWork: true, offerFieldWork: true, @@ -333,7 +361,8 @@ export const FactionInfos: Record = { ), inviteReqs: [ - employedBy(CompanyName.FulcrumTechnologies, { withRep: CONSTANTS.CorpFactionRepRequirement }), + employedBy(CompanyName.FulcrumTechnologies), + haveCompanyRep(CompanyName.FulcrumTechnologies, CONSTANTS.CorpFactionRepRequirement), haveBackdooredServer(SpecialServers.FulcrumSecretTechnologies), ], rumorReqs: [employedBy(CompanyName.FulcrumTechnologies)], @@ -520,12 +549,12 @@ export const FactionInfos: Record = { infoText: <>It is better to reign in Hell than to serve in Heaven., rumorText: <>“We know.”, inviteReqs: [ - notEmployee(CompanyName.CIA), - notEmployee(CompanyName.NSA), - haveKarma(-45), + notEmployedBy(CompanyName.CIA), + notEmployedBy(CompanyName.NSA), haveSkill("hacking", 100), haveCombatSkills(300), haveKilledPeople(30), + haveKarma(-45), ], rumorReqs: [haveKarma(-45), haveSkill("hacking", 50), haveCombatSkills(150), haveKilledPeople(5)], offerHackingWork: true, @@ -538,19 +567,19 @@ export const FactionInfos: Record = { rumorText: <>A ruthless criminal organization based in {CityName.Chongqing}, inviteReqs: [ locatedInCity(CityName.Chongqing), - notEmployee(CompanyName.CIA), - notEmployee(CompanyName.NSA), - haveKarma(-45), + notEmployedBy(CompanyName.CIA), + notEmployedBy(CompanyName.NSA), haveSkill("hacking", 300), haveCombatSkills(300), haveKilledPeople(5), + haveKarma(-45), ], rumorReqs: [ locatedInCity(CityName.Chongqing), - haveKarma(-45), haveSkill("hacking", 150), haveCombatSkills(150), haveKilledPeople(1), + haveKarma(-45), ], offerHackingWork: true, offerFieldWork: true, @@ -560,17 +589,18 @@ export const FactionInfos: Record = { infoText: <>Honor holds you back., rumorText: <>An elite criminal organization that operates in the western hemisphere, inviteReqs: [ - locatedInCity(CityName.Aevum, CityName.Sector12), - notEmployee(CompanyName.CIA), - notEmployee(CompanyName.NSA), - haveKarma(-90), + locatedInSomeCity(CityName.Aevum, CityName.Sector12), + notEmployedBy(CompanyName.CIA), + notEmployedBy(CompanyName.NSA), haveMoney(10e6), haveSkill("hacking", 200), haveCombatSkills(200), + haveKarma(-90), ], rumorReqs: [ - locatedInCity(CityName.Aevum, CityName.Sector12), - someCondition(haveKarma(-90), haveFile(LiteratureName.Sector12Crime)), + locatedInSomeCity(CityName.Aevum, CityName.Sector12), + haveCombatSkills(100), + someCondition([haveKarma(-90), haveFile(LiteratureName.Sector12Crime)]), ], offerHackingWork: true, offerFieldWork: true, @@ -603,13 +633,14 @@ export const FactionInfos: Record = { infoText: <>Following the mandate of Heaven and carrying out the way., rumorText: <>A notorious East Asian criminal organization, inviteReqs: [ - locatedInCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), - haveKarma(-18), + locatedInSomeCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), haveCombatSkills(75), + haveKarma(-18), ], rumorReqs: [ - locatedInCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), - someCondition(haveKarma(-18), haveFile(LiteratureName.NewTriads)), + locatedInSomeCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), + haveCombatSkills(50), + someCondition([haveKarma(-18), haveFile(LiteratureName.NewTriads)]), ], offerFieldWork: true, offerSecurityWork: true, @@ -619,7 +650,7 @@ export const FactionInfos: Record = { infoText: <>{FactionName.SlumSnakes} rule!, rumorText: <>Graffiti seen in the slums: “{FactionName.SlumSnakes} rule!”, inviteReqs: [haveCombatSkills(30), haveMoney(1e6), haveKarma(-9)], - rumorReqs: [haveKarma(-1)], + rumorReqs: [haveCombatSkills(10), someCondition([haveKarma(-1), haveFile(LiteratureName.Sector12Crime)])], offerFieldWork: true, offerSecurityWork: true, }), @@ -637,12 +668,12 @@ export const FactionInfos: Record = { infoText: <>Obey Heaven and work righteously., rumorText: <>A Chinese honor society with the motto: “Obey Heaven and work righteously.”, inviteReqs: [ - locatedInCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), + locatedInSomeCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), haveSkill("hacking", 50), haveMoney(1e6), ], rumorReqs: [ - locatedInCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), + locatedInSomeCity(CityName.Chongqing, CityName.NewTokyo, CityName.Ishima), haveSkill("hacking", 25), haveMoney(0.5e6), ], @@ -662,8 +693,8 @@ export const FactionInfos: Record = { ), rumorText: <>The {CompanyName.NSA} would like to have a word with you once you're ready., - inviteReqs: [haveSourceFile(6, 7), haveBladeburnerRank(BladeburnerConstants.RankNeededForFaction)], - rumorReqs: [haveSourceFile(6, 7)], + inviteReqs: [haveSomeSourceFile(6, 7), haveBladeburnerRank(BladeburnerConstants.RankNeededForFaction)], + rumorReqs: [haveSomeSourceFile(6, 7)], special: true, assignment: (): React.ReactElement => { return ( @@ -715,6 +746,7 @@ export const FactionInfos: Record = { haveAugmentations(0), { toString: () => `Investigate the dilapidated church in ${CityName.Chongqing}`, + toJSON: () => ({ type: "location", location: LocationName.ChongqingChurchOfTheMachineGod }), isSatisfied: (p: PlayerObject) => { return [...p.factions, ...p.factionInvitations].includes(FactionName.ChurchOfTheMachineGod); }, @@ -750,6 +782,7 @@ export const FactionInfos: Record = { inviteReqs: [ { toString: () => `Complete an infiltration`, + toJSON: () => ({ type: "numInfiltrations", numInfiltrations: 1 }), isSatisfied: (p: PlayerObject) => { return [...p.factions, ...p.factionInvitations].includes(FactionName.ShadowsOfAnarchy); }, diff --git a/src/Faction/FactionJoinCondition.ts b/src/Faction/FactionJoinCondition.ts index 8775bba0e..38d1bcec6 100644 --- a/src/Faction/FactionJoinCondition.ts +++ b/src/Faction/FactionJoinCondition.ts @@ -1,4 +1,5 @@ import { CompanyName, JobName, CityName, AugmentationName, LiteratureName, MessageFilename } from "@enums"; +import { ServerName } from "../Types/strings"; import { Server } from "../Server/Server"; import { GetServer } from "../Server/AllServers"; import { HacknetServer } from "../Hacknet/HacknetServer"; @@ -7,16 +8,44 @@ import { Companies } from "../Company/Companies"; import { formatReputation, formatMoney, formatRam } from "../ui/formatNumber"; import type { PlayerObject } from "../PersonObjects/Player/PlayerObject"; import type { Skills } from "../PersonObjects/Skills"; +import type { + PlayerRequirement, + BackdoorRequirement, + CityRequirement, + CompanyReputationRequirement, + EmployedByRequirement, + JobTitleRequirement, + KarmaRequiremennt, + MoneyRequirement, + NumAugmentationsRequirement, + PeopleKilledRequirement, + SkillRequirement, + FileRequirement, + BladeburnerRankRequirement, + HacknetRAMRequirement, + HacknetCoresRequirement, + HacknetLevelsRequirement, + NotRequirement, + SomeRequirement, + EveryRequirement, +} from "@nsdefs"; -export interface JoinCondition { +/** + * Declarative format for checking that the player satisfies some condition, such as the requirements for being invited to a faction. + */ +export interface PlayerCondition { toString(): string; + toJSON(): PlayerRequirement; isSatisfied(p: PlayerObject): boolean; } -export const haveBackdooredServer = (hostname: string): JoinCondition => ({ +export const haveBackdooredServer = (hostname: ServerName): PlayerCondition => ({ toString(): string { return `Backdoor access to ${hostname} server`; }, + toJSON(): BackdoorRequirement { + return { type: "backdoorInstalled", server: hostname }; + }, isSatisfied(): boolean { const server = GetServer(hostname); if (!(server instanceof Server)) { @@ -26,57 +55,69 @@ export const haveBackdooredServer = (hostname: string): JoinCondition => ({ }, }); -export const employedBy = ( - companyName: CompanyName, - { withRep }: { withRep: number } = { withRep: 0 }, -): JoinCondition => ({ +export const employedBy = (companyName: CompanyName): PlayerCondition => ({ toString(): string { - if (withRep == 0) { - return `Employed at ${companyName}`; - } else { - return `Employed at ${companyName} with ${formatReputation(withRep)} reputation`; - } + return `Employed at ${companyName}`; + }, + toJSON(): EmployedByRequirement { + return { type: "employedBy", company: companyName }; }, isSatisfied(p: PlayerObject): boolean { + return Object.hasOwn(p.jobs, companyName); + }, +}); + +export const haveCompanyRep = (companyName: CompanyName, rep: number): PlayerCondition => ({ + toString(): string { + return `${formatReputation(rep)} reputation with ${companyName}`; + }, + toJSON(): CompanyReputationRequirement { + return { type: "companyReputation", company: companyName, reputation: rep }; + }, + isSatisfied(): boolean { const company = Companies[companyName]; if (!company) return false; const serverMeta = serverMetadata.find((s) => s.specialName === companyName); const server = GetServer(serverMeta ? serverMeta.hostname : ""); - const bonus = (server as Server).backdoorInstalled ? -100e3 : 0; - return Object.hasOwn(p.jobs, companyName) && company.playerReputation > withRep + bonus; + const bonus = server?.backdoorInstalled ? 100e3 : 0; + return company.playerReputation + bonus >= rep; }, }); -export const executiveEmployee = (): JoinCondition => ({ +export const haveJobTitle = (jobTitle: JobName): PlayerCondition => ({ toString(): string { - return `CTO, CFO, or CEO of a company`; + return `Employed as a ${jobTitle}`; + }, + toJSON(): JobTitleRequirement { + return { type: "jobTitle", jobTitle: jobTitle }; }, isSatisfied(p: PlayerObject): boolean { const allPositions = Object.values(p.jobs); - return ( - allPositions.includes(JobName.software7) || // CTO - allPositions.includes(JobName.business4) || // CFO - allPositions.includes(JobName.business5) // CEO - ); + return allPositions.includes(jobTitle); }, }); -export const notEmployee = (...companyNames: CompanyName[]): JoinCondition => ({ +export const executiveEmployee = (): PlayerCondition => ({ + ...someCondition([JobName.software7, JobName.business4, JobName.business5].map((jobTitle) => haveJobTitle(jobTitle))), toString(): string { - return `Not working for the ${joinList(companyNames)}`; - }, - isSatisfied(p: PlayerObject): boolean { - for (const companyName of companyNames) { - if (Object.hasOwn(p.jobs, companyName)) return false; - } - return true; + return `CTO, CFO, or CEO of a company`; }, }); -export const haveAugmentations = (n: number): JoinCondition => ({ +export const notEmployedBy = (companyName: CompanyName): PlayerCondition => ({ + ...notCondition(employedBy(companyName)), + toString(): string { + return `Not working for the ${companyName}`; + }, +}); + +export const haveAugmentations = (n: number): PlayerCondition => ({ toString(): string { return `${n || "No"} augmentations installed`; }, + toJSON(): NumAugmentationsRequirement { + return { type: "numAugmentations", numAugmentations: n }; + }, isSatisfied(p: PlayerObject): boolean { if (n == 0) { const augs = [...p.augmentations, ...p.queuedAugmentations].filter( @@ -88,67 +129,94 @@ export const haveAugmentations = (n: number): JoinCondition => ({ }, }); -export const haveMoney = (n: number): JoinCondition => ({ +export const haveMoney = (n: number): PlayerCondition => ({ toString(): string { return `Have ${formatMoney(n)}`; }, + toJSON(): MoneyRequirement { + return { type: "money", money: n }; + }, isSatisfied(p: PlayerObject): boolean { return p.money >= n; }, }); -export const haveSkill = (skill: keyof Skills, n: number): JoinCondition => ({ +export const haveSkill = (skill: keyof Skills, n: number): PlayerCondition => ({ toString(): string { return `${capitalize(skill)} level ${n}`; }, + toJSON(): SkillRequirement { + return { type: "skills", skills: { [skill]: n } }; + }, isSatisfied(p: PlayerObject): boolean { return p.skills[skill] >= n; }, }); -export const haveCombatSkills = (n: number): JoinCondition => ({ +export const haveCombatSkills = (n: number): CompoundPlayerCondition => ({ + ...everyCondition(["strength", "defense", "dexterity", "agility"].map((s) => haveSkill(s as keyof Skills, n))), toString(): string { return `All combat skills level ${n}`; }, - isSatisfied(p: PlayerObject): boolean { - return p.skills.strength >= n && p.skills.defense >= n && p.skills.dexterity >= n && p.skills.agility >= n; + toJSON(): SkillRequirement { + return { type: "skills", skills: { strength: n, defense: n, dexterity: n, agility: n } }; }, }); -export const haveKarma = (n: number): JoinCondition => ({ +export const haveKarma = (n: number): PlayerCondition => ({ toString(): string { - return `${n} karma`; + if (n < -1000) return "An extensive criminal record"; + else if (n < -40) return "A criminal reputation"; + else if (n < -20) return "A disregard for the law"; + else if (n < -10) return "A history of violence"; + else return "Street cred"; + }, + toJSON(): KarmaRequiremennt { + return { type: "karma", karma: n }; }, isSatisfied(p: PlayerObject): boolean { return p.karma <= n; }, }); -export const haveKilledPeople = (n: number): JoinCondition => ({ +export const haveKilledPeople = (n: number): PlayerCondition => ({ toString(): string { return `${n} people killed`; }, + toJSON(): PeopleKilledRequirement { + return { type: "numPeopleKilled", numPeopleKilled: n }; + }, isSatisfied(p: PlayerObject): boolean { return p.numPeopleKilled >= n; }, }); -export const locatedInCity = (...cities: CityName[]): JoinCondition => ({ +export const locatedInCity = (city: CityName): PlayerCondition => ({ toString(): string { - return `Located in ${joinList(cities)}`; + return `Located in ${city}`; + }, + toJSON(): CityRequirement { + return { type: "city", city: city }; }, isSatisfied(p: PlayerObject): boolean { - for (const city of cities) { - if (p.city == city) return true; - } - return false; + return p.city == city; }, }); -export const totalHacknetRam = (n: number): JoinCondition => ({ +export const locatedInSomeCity = (...cities: CityName[]): PlayerCondition => ({ + ...someCondition(cities.map((city) => locatedInCity(city))), + toString(): string { + return `Located in ${joinList(cities)}`; + }, +}); + +export const totalHacknetRam = (n: number): PlayerCondition => ({ toString(): string { return `Total Hacknet RAM of ${formatRam(n)}`; }, + toJSON(): HacknetRAMRequirement { + return { type: "hacknetRAM", hacknetRAM: n }; + }, isSatisfied(p: PlayerObject): boolean { let total = 0; for (const node of iterateHacknet(p)) { @@ -159,10 +227,13 @@ export const totalHacknetRam = (n: number): JoinCondition => ({ }, }); -export const totalHacknetCores = (n: number): JoinCondition => ({ +export const totalHacknetCores = (n: number): PlayerCondition => ({ toString(): string { return `Total Hacknet cores of ${n}`; }, + toJSON(): HacknetCoresRequirement { + return { type: "hacknetCores", hacknetCores: n }; + }, isSatisfied(p: PlayerObject): boolean { let total = 0; for (const node of iterateHacknet(p)) { @@ -173,10 +244,13 @@ export const totalHacknetCores = (n: number): JoinCondition => ({ }, }); -export const totalHacknetLevels = (n: number): JoinCondition => ({ +export const totalHacknetLevels = (n: number): PlayerCondition => ({ toString(): string { return `Total Hacknet levels of ${n}`; }, + toJSON(): HacknetLevelsRequirement { + return { type: "hacknetLevels", hacknetLevels: n }; + }, isSatisfied(p: PlayerObject): boolean { let total = 0; for (const node of iterateHacknet(p)) { @@ -187,48 +261,141 @@ export const totalHacknetLevels = (n: number): JoinCondition => ({ }, }); -export const haveBladeburnerRank = (n: number): JoinCondition => ({ +export const haveBladeburnerRank = (n: number): PlayerCondition => ({ toString(): string { return `Rank ${n} in the Bladeburner Division`; }, + toJSON(): BladeburnerRankRequirement { + return { type: "bladeburnerRank", bladeburnerRank: n }; + }, isSatisfied(p: PlayerObject): boolean { const rank = p.bladeburner?.rank || 0; return rank >= n; }, }); -export const haveSourceFile = (...nodeNums: number[]): JoinCondition => ({ +export const haveSourceFile = (n: number): PlayerCondition => ({ toString(): string { - return `In BitNode ${joinList(nodeNums)} or have SourceFile ${joinList(nodeNums)}`; + return `In BitNode ${n} or have SourceFile ${n}`; + }, + toJSON(): SomeRequirement { + return { + type: "someCondition", + conditions: [ + { type: "bitNodeN", bitNodeN: n }, + { type: "sourceFile", sourceFile: n }, + ], + }; }, isSatisfied(p: PlayerObject): boolean { - for (const n of nodeNums) { - if (p.bitNodeN === n || p.sourceFileLvl(n) > 0) return true; - } - return false; + return p.bitNodeN == n || p.sourceFileLvl(n) > 0; }, }); -export const haveFile = (fileName: LiteratureName | MessageFilename): JoinCondition => ({ +export const haveSomeSourceFile = (...nodeNums: number[]): PlayerCondition => ({ + ...someCondition(nodeNums.map((n) => haveSourceFile(n))), + toString(): string { + return `In BitNode ${joinList(nodeNums)} or have SourceFile ${joinList(nodeNums)}`; + }, +}); + +export const haveFile = (fileName: LiteratureName | MessageFilename): PlayerCondition => ({ toString(): string { return `Have the file '${fileName}'`; }, + toJSON(): FileRequirement { + return { type: "file", file: fileName }; + }, isSatisfied(p: PlayerObject): boolean { const homeComputer = p.getHomeComputer(); return homeComputer.messages.includes(fileName); }, }); -export const someCondition = (...conditions: JoinCondition[]): JoinCondition => ({ +/* higher-order conditions */ + +export interface CompoundPlayerCondition extends PlayerCondition, Iterable { + type: "someCondition" | "everyCondition"; + [Symbol.iterator]: () => IterableIterator; +} + +export const unsatisfiable: PlayerCondition = { + toString(): string { + return "(unsatisfiable)"; + }, + toJSON(): SomeRequirement { + return { type: "someCondition", conditions: [] }; + }, + isSatisfied(): boolean { + return false; + }, +}; + +export const notCondition = (condition: PlayerCondition): PlayerCondition => ({ + toString(): string { + return `Not ${condition.toString()}`; + }, + toJSON(): NotRequirement { + return { type: "not", condition: condition.toJSON() }; + }, + isSatisfied(p: PlayerObject): boolean { + return !condition.isSatisfied(p); + }, +}); + +export const someCondition = (conditions: PlayerCondition[]): CompoundPlayerCondition => ({ + type: "someCondition", toString(): string { return joinList(conditions.map((c) => c.toString())); }, - isSatisfied(p: PlayerObject): boolean { - for (const condition of conditions) { - if (condition.isSatisfied(p)) return true; - } - return false; + toJSON(): SomeRequirement { + return { type: "someCondition", conditions: conditions.map((c) => c.toJSON()) }; }, + isSatisfied(p: PlayerObject): boolean { + return conditions.some((c) => c.isSatisfied(p)); + }, + *[Symbol.iterator](): IterableIterator { + for (const cond of conditions) { + if ("type" in cond && cond.type == "someCondition") { + // automatically flatten nested OR lists + yield* cond as CompoundPlayerCondition; + } else { + yield cond; + } + } + }, +}); + +export const everyCondition = (conditions: PlayerCondition[]): CompoundPlayerCondition => ({ + type: "everyCondition", + toString(): string { + return joinList( + conditions.map((c) => c.toString()), + "and", + ); + }, + toJSON(): EveryRequirement { + return { type: "everyCondition", conditions: conditions.map((c) => c.toJSON()) }; + }, + isSatisfied(p: PlayerObject): boolean { + return conditions.every((c) => c.isSatisfied(p)); + }, + *[Symbol.iterator](): IterableIterator { + for (const cond of conditions) { + if ("type" in cond && cond.type == "everyCondition") { + // automatically flatten nested AND lists + yield* cond as CompoundPlayerCondition; + } else { + yield cond; + } + } + }, +}); + +export const delayedCondition = (arg: () => PlayerCondition): PlayerCondition => ({ + toString: () => arg().toString(), + toJSON: () => arg().toJSON(), + isSatisfied: (p: PlayerObject) => arg().isSatisfied(p), }); /* helpers */ diff --git a/src/Faction/ui/FactionsRoot.tsx b/src/Faction/ui/FactionsRoot.tsx index 4f43ce46d..7290cf9bb 100644 --- a/src/Faction/ui/FactionsRoot.tsx +++ b/src/Faction/ui/FactionsRoot.tsx @@ -50,7 +50,7 @@ const JoinChecklist = (props: { faction: Faction }): React.ReactElement => { const info = props.faction.getInfo(); return ( <> - {info.inviteReqs.map((condition, i) => ( + {[...info.inviteReqs].map((condition, i) => ( ))} diff --git a/src/Netscript/RamCostGenerator.ts b/src/Netscript/RamCostGenerator.ts index a3b3da4a1..e410562e3 100644 --- a/src/Netscript/RamCostGenerator.ts +++ b/src/Netscript/RamCostGenerator.ts @@ -181,7 +181,7 @@ const singularity = { getCompanyRep: SF4Cost(RamCostConstants.SingularityFn2 / 3), getCompanyFavor: SF4Cost(RamCostConstants.SingularityFn2 / 3), getCompanyFavorGain: SF4Cost(RamCostConstants.SingularityFn2 / 4), - // Temporarily removed for API improvements getFactionInviteRequirements: SF4Cost(RamCostConstants.SingularityFn2), + getFactionInviteRequirements: SF4Cost(RamCostConstants.SingularityFn2), checkFactionInvitations: SF4Cost(RamCostConstants.SingularityFn2), joinFaction: SF4Cost(RamCostConstants.SingularityFn2), workForFaction: SF4Cost(RamCostConstants.SingularityFn2), diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index cfa63bb03..faedfb2fe 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -816,14 +816,12 @@ export function NetscriptSingularity(): InternalAPI { const companyName = getEnumHelper("CompanyName").nsGetMember(ctx, _companyName); return Companies[companyName].getFavorGain(); }, - /* Function temporarily removed, likely to change in next version to be more programming-friendly instead of providing human-readable string outputs for each requirement getFactionInviteRequirements: (ctx) => (_facName) => { helpers.checkSingularityAccess(ctx); const facName = getEnumHelper("FactionName").nsGetMember(ctx, _facName); const fac = Factions[facName]; - return fac.getInfo().inviteReqs.map((condition) => condition.toString()); + return [...fac.getInfo().inviteReqs].map((condition) => condition.toJSON()); }, - */ checkFactionInvitations: (ctx) => () => { helpers.checkSingularityAccess(ctx); // Manually trigger a check for faction invites diff --git a/src/NetscriptFunctions/Stanek.ts b/src/NetscriptFunctions/Stanek.ts index 79a185c10..b75ea5a5d 100644 --- a/src/NetscriptFunctions/Stanek.ts +++ b/src/NetscriptFunctions/Stanek.ts @@ -108,19 +108,13 @@ export function NetscriptStanek(): InternalAPI { return staneksGift.delete(rootX, rootY); }, acceptGift: (ctx) => () => { - //Check if the player is eligible to join the church - if ( - Player.canAccessCotMG() && - Player.augmentations.filter((a) => a.name !== AugmentationName.NeuroFluxGovernor).length == 0 && - Player.queuedAugmentations.filter((a) => a.name !== AugmentationName.NeuroFluxGovernor).length == 0 - ) { - //Attempt to join CotMG - joinFaction(Factions[FactionName.ChurchOfTheMachineGod]); - //Attempt to install the first Stanek aug - if ( - !Player.hasAugmentation(AugmentationName.StaneksGift1) && - !Player.queuedAugmentations.some((a) => a.name === AugmentationName.StaneksGift1) - ) { + const cotmgFaction = Factions[FactionName.ChurchOfTheMachineGod]; + // Check if the player is eligible to join the church + if (cotmgFaction.getInfo().inviteReqs.isSatisfied(Player)) { + // Attempt to join CotMG + joinFaction(cotmgFaction); + // Attempt to install the first Stanek aug (unless it is already queued) + if (!Player.hasAugmentation(AugmentationName.StaneksGift1, false)) { applyAugmentation({ name: AugmentationName.StaneksGift1, level: 1 }); helpers.log( ctx, @@ -128,11 +122,8 @@ export function NetscriptStanek(): InternalAPI { ); } } - //Return true iff the player is in CotMG and has the first Stanek aug installed - return ( - Factions[FactionName.ChurchOfTheMachineGod].isMember && - Player.hasAugmentation(AugmentationName.StaneksGift1, true) - ); + // Return true iff the player is in CotMG and has the first Stanek aug installed + return cotmgFaction.isMember && Player.hasAugmentation(AugmentationName.StaneksGift1, true); }, }; } diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts b/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts index e95f8c560..44288622a 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts @@ -620,10 +620,10 @@ export function checkForFactionInvitations(this: PlayerObject): Faction[] { if (faction.alreadyInvited) continue; // Handle invites const { inviteReqs, rumorReqs } = faction.getInfo(); - if (inviteReqs.every((req) => req.isSatisfied(this))) invitedFactions.push(faction); + if (inviteReqs.isSatisfied(this)) invitedFactions.push(faction); // Handle rumors if (this.factionRumors.has(faction.name)) continue; - if (rumorReqs.every((req) => req.isSatisfied(this))) this.receiveRumor(faction.name); + if (rumorReqs.isSatisfied(this)) this.receiveRumor(faction.name); } return invitedFactions; } diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 953ca78d5..c83a6d913 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -1937,29 +1937,39 @@ export interface Singularity { */ getCompanyFavorGain(companyName: CompanyName | `${CompanyName}`): number; - /* Experimental function temporarily removed, likely to undergo changes in next patch to make return value more programming-friendly + /** * List conditions for being invited to a faction. * @remarks * RAM cost: 3 GB * 16/4/1 * - * @param faction - Name of the faction. - * @returns Array of strings describing conditions for receiving an invitation to the faction. + * @param faction - Name of the faction + * @returns Array of PlayerRequirement objects which must all be fulfilled to receive an invitation. * * @example * ```js * ns.singularity.getFactionInviteRequirements("The Syndicate") * [ - * "Located in Aevum or Sector-12", - * "Not working for the Central Intelligence Agency", - * "Not working for the National Security Agency", - * "-90 karma", - * "Have $10.000m", - * "Hacking level 200", - * "All combat skills level 200" + * { "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 } * ] * ``` - getFactionInviteRequirements(faction: string): string[]; - */ + */ + getFactionInviteRequirements(faction: string): PlayerRequirement[]; /** * List all current faction invitations. @@ -8145,3 +8155,215 @@ interface AutocompleteData { txts: string[]; flags(schema: [string, string | number | boolean | string[]][]): { [key: string]: ScriptArg | string[] }; } + +/** + * Player must have at least this much money. + * @public + */ +interface MoneyRequirement { + type: "money"; + money: number; +} +/** + * Player must have each listed skill at least this level. + * @public + */ +interface SkillRequirement { + type: "skills"; + skills: Partial; +} +/** + * Player must have less than this much karma. + * @public + */ +interface KarmaRequiremennt { + type: "karma"; + karma: number; +} +/** + * Player must have killed at least this many people. + * @public + */ +interface PeopleKilledRequirement { + type: "numPeopleKilled"; + numPeopleKilled: number; +} +/** + * Player must have a specific Literature or Message file on their home computer. + * @public + */ +interface FileRequirement { + type: "file"; + file: string; +} +/** + * Player must have at least this many augmentations installed (if positive). + * Player must have no augmentations installed (if zero). + * @public + */ +interface NumAugmentationsRequirement { + type: "numAugmentations"; + numAugmentations: number; +} +/** + * Player must be working for this company. + * @public + */ +interface EmployedByRequirement { + type: "employedBy"; + company: CompanyName; +} +/** + * Player must have at least this much reputation with this company. + * @public + */ +interface CompanyReputationRequirement { + type: "companyReputation"; + company: CompanyName; + reputation: number; +} +/** + * Player must have this job title at some company. + * @public + */ +interface JobTitleRequirement { + type: "jobTitle"; + jobTitle: JobName; +} +/** + * Player must be located in this city. + * @public + */ +interface CityRequirement { + type: "city"; + city: CityName; +} +/** + * Player must be at this location within a city. + * @public + */ +interface LocationRequirement { + type: "location"; + location: LocationName; +} +/** + * Player must have installed a backdoor on this server. + * @public + */ +interface BackdoorRequirement { + type: "backdoorInstalled"; + server: string; +} +/** + * Player's Hacknet devices must have at least this much total RAM. + * @public + */ +interface HacknetRAMRequirement { + type: "hacknetRAM"; + hacknetRAM: number; +} +/** + * Player's Hacknet devices must have at least this many total cores. + * @public + */ +interface HacknetCoresRequirement { + type: "hacknetCores"; + hacknetCores: number; +} +/** + * Player's Hacknet devices must have at least this many total levels. + * @public + */ +interface HacknetLevelsRequirement { + type: "hacknetLevels"; + hacknetLevels: number; +} +/** + * Player must be located in this BitNode. + * @public + */ +interface BitNodeRequirement { + type: "bitNodeN"; + bitNodeN: number; +} +/** + * Player must have this Source File. + * @public + */ +interface SourceFileRequirement { + type: "sourceFile"; + sourceFile: number; +} +/** + * Player must have at least this rank in the Bladeburner Division. + * @public + */ +interface BladeburnerRankRequirement { + type: "bladeburnerRank"; + bladeburnerRank: number; +} +/** + * Player must have completed this many infiltrations. + * @public + */ +interface NumInfiltrationsRequirement { + type: "numInfiltrations"; + numInfiltrations: number; +} +/** + * The sub-condition must not be satisfied. + * @public + */ +interface NotRequirement { + type: "not"; + condition: PlayerRequirement; +} +/** + * At least one sub-condition must be satisfied. + * @public + */ +interface SomeRequirement { + type: "someCondition"; + conditions: PlayerRequirement[]; +} +/** + * All sub-conditions must be satisfied. + * @public + */ +interface EveryRequirement { + type: "everyCondition"; + conditions: PlayerRequirement[]; +} + +/** + * 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. + * @public + * @returns - An object representing one requirement. + */ +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;