mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-19 04:35:46 +01:00
SINGULARITY: getCompanyPositionInfo (#460)
This commit is contained in:
parent
8d52e1b510
commit
677686fa20
@ -155,6 +155,7 @@ const singularity = {
|
|||||||
purchaseTor: SF4Cost(RamCostConstants.SingularityFn1),
|
purchaseTor: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
purchaseProgram: SF4Cost(RamCostConstants.SingularityFn1),
|
purchaseProgram: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
getCurrentServer: SF4Cost(RamCostConstants.SingularityFn1),
|
getCurrentServer: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
|
getCompanyPositionInfo: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
getCompanyPositions: SF4Cost(RamCostConstants.SingularityFn1),
|
getCompanyPositions: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
connect: SF4Cost(RamCostConstants.SingularityFn1),
|
connect: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
manualHack: SF4Cost(RamCostConstants.SingularityFn1),
|
manualHack: SF4Cost(RamCostConstants.SingularityFn1),
|
||||||
|
@ -15,7 +15,7 @@ import { Singularity as ISingularity } from "@nsdefs";
|
|||||||
import { findCrime } from "../Crime/CrimeHelpers";
|
import { findCrime } from "../Crime/CrimeHelpers";
|
||||||
import { CompanyPositions } from "../Company/CompanyPositions";
|
import { CompanyPositions } from "../Company/CompanyPositions";
|
||||||
import { DarkWebItems } from "../DarkWeb/DarkWebItems";
|
import { DarkWebItems } from "../DarkWeb/DarkWebItems";
|
||||||
import { CityName, LocationName } from "../Enums";
|
import { CityName, LocationName, JobName } from "../Enums";
|
||||||
import { Router } from "../ui/GameRoot";
|
import { Router } from "../ui/GameRoot";
|
||||||
import { SpecialServers } from "../Server/data/SpecialServers";
|
import { SpecialServers } from "../Server/data/SpecialServers";
|
||||||
import { Page } from "../ui/Router";
|
import { Page } from "../ui/Router";
|
||||||
@ -26,6 +26,7 @@ import { formatMoney, formatRam, formatReputation } from "../ui/formatNumber";
|
|||||||
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
|
||||||
import { Company } from "../Company/Company";
|
import { Company } from "../Company/Company";
|
||||||
import { Companies } from "../Company/Companies";
|
import { Companies } from "../Company/Companies";
|
||||||
|
import { companiesMetadata } from "../Company/data/CompaniesMetadata";
|
||||||
import { Factions, factionExists } from "../Faction/Factions";
|
import { Factions, factionExists } from "../Faction/Factions";
|
||||||
import { Faction } from "../Faction/Faction";
|
import { Faction } from "../Faction/Faction";
|
||||||
import { helpers } from "../Netscript/NetscriptHelpers";
|
import { helpers } from "../Netscript/NetscriptHelpers";
|
||||||
@ -51,6 +52,7 @@ import { calculateCrimeWorkStats } from "../Work/Formulas";
|
|||||||
import { findEnumMember } from "../utils/helpers/enum";
|
import { findEnumMember } from "../utils/helpers/enum";
|
||||||
import { areFilesEqual } from "../Terminal/DirectoryHelpers";
|
import { areFilesEqual } from "../Terminal/DirectoryHelpers";
|
||||||
import { Engine } from "../engine";
|
import { Engine } from "../engine";
|
||||||
|
import { checkEnum } from "../utils/helpers/enum";
|
||||||
|
|
||||||
export function NetscriptSingularity(): InternalAPI<ISingularity> {
|
export function NetscriptSingularity(): InternalAPI<ISingularity> {
|
||||||
const getAugmentation = function (ctx: NetscriptContext, name: string): Augmentation {
|
const getAugmentation = function (ctx: NetscriptContext, name: string): Augmentation {
|
||||||
@ -687,6 +689,44 @@ export function NetscriptSingularity(): InternalAPI<ISingularity> {
|
|||||||
.filter((_position) => Companies[companyName].hasPosition(_position[0]))
|
.filter((_position) => Companies[companyName].hasPosition(_position[0]))
|
||||||
.map((_position) => _position[1]["name"]);
|
.map((_position) => _position[1]["name"]);
|
||||||
},
|
},
|
||||||
|
getCompanyPositionInfo: (ctx) => (_companyName, _positionName) => {
|
||||||
|
helpers.checkSingularityAccess(ctx);
|
||||||
|
const companyName = helpers.string(ctx, "companyName", _companyName);
|
||||||
|
const positionName = helpers.string(ctx, "positionName", _positionName);
|
||||||
|
|
||||||
|
// Make sure its a valid company
|
||||||
|
if (!(companyName in Companies)) {
|
||||||
|
throw helpers.makeRuntimeErrorMsg(ctx, `Invalid company: '${companyName}'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure its a valid position
|
||||||
|
if (!checkEnum(JobName, positionName)) {
|
||||||
|
throw helpers.makeRuntimeErrorMsg(ctx, `Invalid position: '${positionName}'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Companies[companyName].hasPosition(positionName)) {
|
||||||
|
throw helpers.makeRuntimeErrorMsg(ctx, `Company '${companyName}' does not have position '${positionName}'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const c = CompanyPositions[positionName];
|
||||||
|
const n = companiesMetadata.filter((company) => company.name === companyName)[0];
|
||||||
|
const res = {
|
||||||
|
name: CompanyPositions[positionName].name,
|
||||||
|
nextPosition: CompanyPositions[positionName].nextPosition,
|
||||||
|
salary: CompanyPositions[positionName].baseSalary * n.salaryMultiplier,
|
||||||
|
requiredReputation: CompanyPositions[positionName].requiredReputation,
|
||||||
|
requiredSkills: {
|
||||||
|
hacking: c.requiredHacking > 0 ? c.requiredHacking + n.jobStatReqOffset : 0,
|
||||||
|
strength: c.requiredStrength > 0 ? c.requiredStrength + n.jobStatReqOffset : 0,
|
||||||
|
defense: c.requiredDefense > 0 ? c.requiredDefense + n.jobStatReqOffset : 0,
|
||||||
|
dexterity: c.requiredDexterity > 0 ? c.requiredDexterity + n.jobStatReqOffset : 0,
|
||||||
|
agility: c.requiredAgility > 0 ? c.requiredAgility + n.jobStatReqOffset : 0,
|
||||||
|
charisma: c.requiredCharisma > 0 ? c.requiredCharisma + n.jobStatReqOffset : 0,
|
||||||
|
intelligence: 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return res;
|
||||||
|
},
|
||||||
workForCompany:
|
workForCompany:
|
||||||
(ctx) =>
|
(ctx) =>
|
||||||
(_companyName, _focus = true) => {
|
(_companyName, _focus = true) => {
|
||||||
|
35
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
35
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -1698,6 +1698,28 @@ export interface Singularity {
|
|||||||
*/
|
*/
|
||||||
getUpgradeHomeCoresCost(): number;
|
getUpgradeHomeCoresCost(): number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Requirements for Company Position.
|
||||||
|
* @remarks
|
||||||
|
* RAM cost: 2 GB * 16/4/1
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This function will return an object that contains the requirements for
|
||||||
|
* a specific position at a specific country.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```js
|
||||||
|
* const companyName = "ECorp";
|
||||||
|
* const position = "Chief Executive Officer";
|
||||||
|
*
|
||||||
|
* let requirements = ns.singularity.getCompanyPositionInfo(companyName, position);
|
||||||
|
* ```
|
||||||
|
* @param companyName - Name of company to get the requirements for. Must be an exact match.
|
||||||
|
* @param positionName - Name of position to get the requirements for. Must be an exact match.
|
||||||
|
* @returns CompanyPositionInfo object.
|
||||||
|
*/
|
||||||
|
getCompanyPositionInfo(companyName: string, positionName: JobName): CompanyPositionInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get List of Company Positions.
|
* Get List of Company Positions.
|
||||||
* @remarks
|
* @remarks
|
||||||
@ -2361,6 +2383,19 @@ export interface Singularity {
|
|||||||
getCurrentWork(): any | null;
|
getCurrentWork(): any | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Company position requirements and salary.
|
||||||
|
* @public
|
||||||
|
* @returns - An object representing the requirements and salary for a company/position combination.
|
||||||
|
*/
|
||||||
|
export interface CompanyPositionInfo {
|
||||||
|
name: CompanyPosName;
|
||||||
|
nextPosition: CompanyPosName | null;
|
||||||
|
salary: number;
|
||||||
|
requiredReputation: number;
|
||||||
|
requiredSkills: Skills;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hacknet API
|
* Hacknet API
|
||||||
* @remarks
|
* @remarks
|
||||||
|
Loading…
Reference in New Issue
Block a user