mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-26 09:33:49 +01:00
NETSCRIPT: Added ns.corporation.getConstants, replacing many other corporation getter functions (#260)
This commit is contained in:
parent
018053d79e
commit
556fe8dd33
@ -1,5 +1,5 @@
|
|||||||
import { Player } from "@player";
|
import { Player } from "@player";
|
||||||
import { MaterialSizes } from "./MaterialSizes";
|
import { MaterialInfo } from "./MaterialInfo";
|
||||||
import { Corporation } from "./Corporation";
|
import { Corporation } from "./Corporation";
|
||||||
import { IndustryResearchTrees, IndustryType, IndustriesData } from "./IndustryData";
|
import { IndustryResearchTrees, IndustryType, IndustriesData } from "./IndustryData";
|
||||||
import { Industry } from "./Industry";
|
import { Industry } from "./Industry";
|
||||||
@ -254,7 +254,7 @@ export function BuyMaterial(material: Material, amt: number): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function BulkPurchase(corp: Corporation, warehouse: Warehouse, material: Material, amt: number): void {
|
export function BulkPurchase(corp: Corporation, warehouse: Warehouse, material: Material, amt: number): void {
|
||||||
const matSize = MaterialSizes[material.name];
|
const matSize = MaterialInfo[material.name][1];
|
||||||
const maxAmount = (warehouse.size - warehouse.sizeUsed) / matSize;
|
const maxAmount = (warehouse.size - warehouse.sizeUsed) / matSize;
|
||||||
if (isNaN(amt) || amt < 0) {
|
if (isNaN(amt) || amt < 0) {
|
||||||
throw new Error(`Invalid input amount`);
|
throw new Error(`Invalid input amount`);
|
||||||
|
@ -10,7 +10,7 @@ import { OfficeSpace } from "./OfficeSpace";
|
|||||||
import { Product } from "./Product";
|
import { Product } from "./Product";
|
||||||
import { dialogBoxCreate } from "../ui/React/DialogBox";
|
import { dialogBoxCreate } from "../ui/React/DialogBox";
|
||||||
import { isString } from "../utils/helpers/isString";
|
import { isString } from "../utils/helpers/isString";
|
||||||
import { MaterialSizes } from "./MaterialSizes";
|
import { MaterialInfo } from "./MaterialInfo";
|
||||||
import { Warehouse } from "./Warehouse";
|
import { Warehouse } from "./Warehouse";
|
||||||
import { Corporation } from "./Corporation";
|
import { Corporation } from "./Corporation";
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ export class Industry {
|
|||||||
}
|
}
|
||||||
buyAmt = mat.buy * CorporationConstants.SecsPerMarketCycle * marketCycles;
|
buyAmt = mat.buy * CorporationConstants.SecsPerMarketCycle * marketCycles;
|
||||||
|
|
||||||
maxAmt = Math.floor((warehouse.size - warehouse.sizeUsed) / MaterialSizes[matName]);
|
maxAmt = Math.floor((warehouse.size - warehouse.sizeUsed) / MaterialInfo[matName][1]);
|
||||||
|
|
||||||
buyAmt = Math.min(buyAmt, maxAmt);
|
buyAmt = Math.min(buyAmt, maxAmt);
|
||||||
if (buyAmt > 0) {
|
if (buyAmt > 0) {
|
||||||
@ -346,7 +346,7 @@ export class Industry {
|
|||||||
if (reqMat === undefined) throw new Error(`reqMat "${matName}" is undefined`);
|
if (reqMat === undefined) throw new Error(`reqMat "${matName}" is undefined`);
|
||||||
mat.buy = reqMat * warehouse.smartSupplyStore;
|
mat.buy = reqMat * warehouse.smartSupplyStore;
|
||||||
let buyAmt = mat.buy * CorporationConstants.SecsPerMarketCycle * marketCycles;
|
let buyAmt = mat.buy * CorporationConstants.SecsPerMarketCycle * marketCycles;
|
||||||
const maxAmt = Math.floor((warehouse.size - warehouse.sizeUsed) / MaterialSizes[matName]);
|
const maxAmt = Math.floor((warehouse.size - warehouse.sizeUsed) / MaterialInfo[matName][1]);
|
||||||
buyAmt = Math.min(buyAmt, maxAmt);
|
buyAmt = Math.min(buyAmt, maxAmt);
|
||||||
if (buyAmt > 0) smartBuy[matName] = buyAmt;
|
if (buyAmt > 0) smartBuy[matName] = buyAmt;
|
||||||
}
|
}
|
||||||
@ -374,7 +374,7 @@ export class Industry {
|
|||||||
for (const matName of Object.keys(smartBuy)) {
|
for (const matName of Object.keys(smartBuy)) {
|
||||||
const buyAmt = smartBuy[matName];
|
const buyAmt = smartBuy[matName];
|
||||||
if (buyAmt === undefined) throw new Error(`Somehow smartbuy matname is undefined`);
|
if (buyAmt === undefined) throw new Error(`Somehow smartbuy matname is undefined`);
|
||||||
totalSize += buyAmt * MaterialSizes[matName];
|
totalSize += buyAmt * MaterialInfo[matName][1];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shrink to the size of available space.
|
// Shrink to the size of available space.
|
||||||
@ -432,12 +432,12 @@ export class Industry {
|
|||||||
// Calculate net change in warehouse storage making the produced materials will cost
|
// Calculate net change in warehouse storage making the produced materials will cost
|
||||||
let totalMatSize = 0;
|
let totalMatSize = 0;
|
||||||
for (let tmp = 0; tmp < this.prodMats.length; ++tmp) {
|
for (let tmp = 0; tmp < this.prodMats.length; ++tmp) {
|
||||||
totalMatSize += MaterialSizes[this.prodMats[tmp]];
|
totalMatSize += MaterialInfo[this.prodMats[tmp]][1];
|
||||||
}
|
}
|
||||||
for (const reqMatName of Object.keys(this.reqMats)) {
|
for (const reqMatName of Object.keys(this.reqMats)) {
|
||||||
const normQty = this.reqMats[reqMatName];
|
const normQty = this.reqMats[reqMatName];
|
||||||
if (normQty === undefined) continue;
|
if (normQty === undefined) continue;
|
||||||
totalMatSize -= MaterialSizes[reqMatName] * normQty;
|
totalMatSize -= MaterialInfo[reqMatName][1] * normQty;
|
||||||
}
|
}
|
||||||
// If not enough space in warehouse, limit the amount of produced materials
|
// If not enough space in warehouse, limit the amount of produced materials
|
||||||
if (totalMatSize > 0) {
|
if (totalMatSize > 0) {
|
||||||
@ -684,7 +684,9 @@ export class Industry {
|
|||||||
// affect revenue so just return 0's
|
// affect revenue so just return 0's
|
||||||
return [0, 0];
|
return [0, 0];
|
||||||
} else {
|
} else {
|
||||||
const maxAmt = Math.floor((expWarehouse.size - expWarehouse.sizeUsed) / MaterialSizes[matName]);
|
const maxAmt = Math.floor(
|
||||||
|
(expWarehouse.size - expWarehouse.sizeUsed) / MaterialInfo[matName][1],
|
||||||
|
);
|
||||||
amt = Math.min(maxAmt, amt);
|
amt = Math.min(maxAmt, amt);
|
||||||
}
|
}
|
||||||
expWarehouse.materials[matName].imp +=
|
expWarehouse.materials[matName].imp +=
|
||||||
@ -797,7 +799,7 @@ export class Industry {
|
|||||||
for (const reqMatName of Object.keys(product.reqMats)) {
|
for (const reqMatName of Object.keys(product.reqMats)) {
|
||||||
if (product.reqMats.hasOwnProperty(reqMatName)) {
|
if (product.reqMats.hasOwnProperty(reqMatName)) {
|
||||||
const normQty = product.reqMats[reqMatName];
|
const normQty = product.reqMats[reqMatName];
|
||||||
netStorageSize -= MaterialSizes[reqMatName] * normQty;
|
netStorageSize -= MaterialInfo[reqMatName][1] * normQty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,11 +21,21 @@ export enum IndustryType {
|
|||||||
RealEstate = "RealEstate",
|
RealEstate = "RealEstate",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IProductRatingWeight {
|
||||||
|
Aesthetics?: number;
|
||||||
|
Durability?: number;
|
||||||
|
Features?: number;
|
||||||
|
Quality?: number;
|
||||||
|
Performance?: number;
|
||||||
|
Reliability?: number;
|
||||||
|
}
|
||||||
|
|
||||||
type IndustryData = {
|
type IndustryData = {
|
||||||
startingCost: number;
|
startingCost: number;
|
||||||
description: string;
|
description: string;
|
||||||
/** Product name for industry. Empty string for industries with no products. */
|
/** Product name for industry. Empty string for industries with no products. */
|
||||||
product?: { name: string; verb: string; desc: string };
|
product?: { name: string; verb: string; desc: string };
|
||||||
|
ProductRatingWeights?: IProductRatingWeight;
|
||||||
recommendStarting: boolean;
|
recommendStarting: boolean;
|
||||||
reqMats: Record<string, number>;
|
reqMats: Record<string, number>;
|
||||||
/** Real estate factor */
|
/** Real estate factor */
|
||||||
@ -74,6 +84,14 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
startingCost: 500e9,
|
startingCost: 500e9,
|
||||||
description: "Develop and manufacture new computer hardware and networking infrastructures.",
|
description: "Develop and manufacture new computer hardware and networking infrastructures.",
|
||||||
product: { name: "Product", verb: "Create", desc: "Design and manufacture a new computer hardware product!" },
|
product: { name: "Product", verb: "Create", desc: "Design and manufacture a new computer hardware product!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.15,
|
||||||
|
Performance: 0.25,
|
||||||
|
Durability: 0.25,
|
||||||
|
Reliability: 0.2,
|
||||||
|
Aesthetics: 0.05,
|
||||||
|
Features: 0.1,
|
||||||
|
},
|
||||||
recommendStarting: false,
|
recommendStarting: false,
|
||||||
reFac: 0.2,
|
reFac: 0.2,
|
||||||
sciFac: 0.62,
|
sciFac: 0.62,
|
||||||
@ -112,6 +130,11 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
startingCost: 10e9,
|
startingCost: 10e9,
|
||||||
description: "Create your own restaurants all around the world.",
|
description: "Create your own restaurants all around the world.",
|
||||||
product: { name: "Restaurant", verb: "Build", desc: "Build and manage a new restaurant!" },
|
product: { name: "Restaurant", verb: "Build", desc: "Build and manage a new restaurant!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.7,
|
||||||
|
Durability: 0.1,
|
||||||
|
Aesthetics: 0.2,
|
||||||
|
},
|
||||||
recommendStarting: true,
|
recommendStarting: true,
|
||||||
sciFac: 0.12,
|
sciFac: 0.12,
|
||||||
hwFac: 0.15,
|
hwFac: 0.15,
|
||||||
@ -125,6 +148,13 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
startingCost: 750e9,
|
startingCost: 750e9,
|
||||||
description: "Create and manage hospitals.",
|
description: "Create and manage hospitals.",
|
||||||
product: { name: "Hospital", verb: "Build", desc: "Build and manage a new hospital!" },
|
product: { name: "Hospital", verb: "Build", desc: "Build and manage a new hospital!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.4,
|
||||||
|
Performance: 0.1,
|
||||||
|
Durability: 0.1,
|
||||||
|
Reliability: 0.3,
|
||||||
|
Features: 0.1,
|
||||||
|
},
|
||||||
recommendStarting: false,
|
recommendStarting: false,
|
||||||
reFac: 0.1,
|
reFac: 0.1,
|
||||||
sciFac: 0.75,
|
sciFac: 0.75,
|
||||||
@ -151,6 +181,13 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
startingCost: 200e9,
|
startingCost: 200e9,
|
||||||
description: "Discover, develop, and create new pharmaceutical drugs.",
|
description: "Discover, develop, and create new pharmaceutical drugs.",
|
||||||
product: { name: "Drug", verb: "Develop", desc: "Design and develop a new pharmaceutical drug!" },
|
product: { name: "Drug", verb: "Develop", desc: "Design and develop a new pharmaceutical drug!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.2,
|
||||||
|
Performance: 0.2,
|
||||||
|
Durability: 0.1,
|
||||||
|
Reliability: 0.3,
|
||||||
|
Features: 0.2,
|
||||||
|
},
|
||||||
recommendStarting: false,
|
recommendStarting: false,
|
||||||
reFac: 0.05,
|
reFac: 0.05,
|
||||||
sciFac: 0.8,
|
sciFac: 0.8,
|
||||||
@ -165,6 +202,13 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
startingCost: 600e9,
|
startingCost: 600e9,
|
||||||
description: "Develop and manage real estate properties.",
|
description: "Develop and manage real estate properties.",
|
||||||
product: { name: "Property", verb: "Develop", desc: "Develop a new piece of real estate property!" },
|
product: { name: "Property", verb: "Develop", desc: "Develop a new piece of real estate property!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.2,
|
||||||
|
Durability: 0.25,
|
||||||
|
Reliability: 0.1,
|
||||||
|
Aesthetics: 0.35,
|
||||||
|
Features: 0.1,
|
||||||
|
},
|
||||||
recommendStarting: false,
|
recommendStarting: false,
|
||||||
robFac: 0.6,
|
robFac: 0.6,
|
||||||
aiFac: 0.6,
|
aiFac: 0.6,
|
||||||
@ -172,12 +216,20 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
sciFac: 0.05,
|
sciFac: 0.05,
|
||||||
hwFac: 0.05,
|
hwFac: 0.05,
|
||||||
reqMats: { Metal: 5, Energy: 5, Water: 2, Hardware: 4 },
|
reqMats: { Metal: 5, Energy: 5, Water: 2, Hardware: 4 },
|
||||||
prodMats: ["RealEstate"],
|
prodMats: ["Real Estate"],
|
||||||
},
|
},
|
||||||
[IndustryType.Robotics]: {
|
[IndustryType.Robotics]: {
|
||||||
startingCost: 1e12,
|
startingCost: 1e12,
|
||||||
description: "Develop and create robots.",
|
description: "Develop and create robots.",
|
||||||
product: { name: "Robot", verb: "Design", desc: "Design and create a new robot or robotic system!" },
|
product: { name: "Robot", verb: "Design", desc: "Design and create a new robot or robotic system!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.1,
|
||||||
|
Performance: 0.2,
|
||||||
|
Durability: 0.2,
|
||||||
|
Reliability: 0.2,
|
||||||
|
Aesthetics: 0.1,
|
||||||
|
Features: 0.2,
|
||||||
|
},
|
||||||
recommendStarting: false,
|
recommendStarting: false,
|
||||||
reFac: 0.32,
|
reFac: 0.32,
|
||||||
sciFac: 0.65,
|
sciFac: 0.65,
|
||||||
@ -191,7 +243,14 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
startingCost: 25e9,
|
startingCost: 25e9,
|
||||||
description: "Develop computer software and create AI Cores.",
|
description: "Develop computer software and create AI Cores.",
|
||||||
product: { name: "Software", verb: "Develop", desc: "Develop a new piece of software!" },
|
product: { name: "Software", verb: "Develop", desc: "Develop a new piece of software!" },
|
||||||
recommendStarting: true,
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.2,
|
||||||
|
Performance: 0.2,
|
||||||
|
Reliability: 0.2,
|
||||||
|
Durability: 0.2,
|
||||||
|
Features: 0.2,
|
||||||
|
},
|
||||||
|
recommendStarting: false,
|
||||||
sciFac: 0.62,
|
sciFac: 0.62,
|
||||||
advFac: 0.16,
|
advFac: 0.16,
|
||||||
hwFac: 0.25,
|
hwFac: 0.25,
|
||||||
@ -199,12 +258,17 @@ export const IndustriesData: Record<IndustryType, IndustryData> = {
|
|||||||
aiFac: 0.18,
|
aiFac: 0.18,
|
||||||
robFac: 0.05,
|
robFac: 0.05,
|
||||||
reqMats: { Hardware: 0.5, Energy: 0.5 },
|
reqMats: { Hardware: 0.5, Energy: 0.5 },
|
||||||
prodMats: ["AICores"],
|
prodMats: ["AI Cores"],
|
||||||
},
|
},
|
||||||
[IndustryType.Tobacco]: {
|
[IndustryType.Tobacco]: {
|
||||||
startingCost: 20e9,
|
startingCost: 20e9,
|
||||||
description: "Create and distribute tobacco and tobacco-related products.",
|
description: "Create and distribute tobacco and tobacco-related products.",
|
||||||
product: { name: "Product", verb: "Create", desc: "Create a new tobacco product!" },
|
product: { name: "Product", verb: "Create", desc: "Create a new tobacco product!" },
|
||||||
|
ProductRatingWeights: {
|
||||||
|
Quality: 0.7,
|
||||||
|
Durability: 0.1,
|
||||||
|
Aesthetics: 0.2,
|
||||||
|
},
|
||||||
recommendStarting: true,
|
recommendStarting: true,
|
||||||
reFac: 0.15,
|
reFac: 0.15,
|
||||||
sciFac: 0.75,
|
sciFac: 0.75,
|
||||||
|
14
src/Corporation/MaterialInfo.ts
Normal file
14
src/Corporation/MaterialInfo.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Map of material (by name) to their sizes (how much space it takes in warehouse)
|
||||||
|
export const MaterialInfo: Record<string, [string, number, boolean]> = {
|
||||||
|
Water: ["Water", 0.05, false],
|
||||||
|
Energy: ["Energy", 0.01, false],
|
||||||
|
Food: ["Food", 0.03, false],
|
||||||
|
Plants: ["Plants", 0.05, false],
|
||||||
|
Metal: ["Metal", 0.1, false],
|
||||||
|
Hardware: ["Hardware", 0.06, true],
|
||||||
|
Chemicals: ["Chemicals", 0.05, false],
|
||||||
|
Drugs: ["Drugs", 0.02, false],
|
||||||
|
Robots: ["Robots", 0.5, true],
|
||||||
|
AICores: ["AI Cores", 0.1, true],
|
||||||
|
RealEstate: ["Real Estate", 0.005, true],
|
||||||
|
};
|
@ -1,16 +0,0 @@
|
|||||||
// Map of material (by name) to their sizes (how much space it takes in warehouse)
|
|
||||||
export const MaterialSizes: Record<string, number> = {
|
|
||||||
Water: 0.05,
|
|
||||||
Energy: 0.01,
|
|
||||||
Food: 0.03,
|
|
||||||
Plants: 0.05,
|
|
||||||
Metal: 0.1,
|
|
||||||
Hardware: 0.06,
|
|
||||||
Chemicals: 0.05,
|
|
||||||
Drugs: 0.02,
|
|
||||||
Robots: 0.5,
|
|
||||||
AICores: 0.1,
|
|
||||||
RealEstate: 0.005,
|
|
||||||
"Real Estate": 0.005,
|
|
||||||
"AI Cores": 0.1,
|
|
||||||
};
|
|
@ -1,7 +1,7 @@
|
|||||||
import { EmployeePositions } from "./EmployeePositions";
|
import { EmployeePositions } from "./EmployeePositions";
|
||||||
import { MaterialSizes } from "./MaterialSizes";
|
import { MaterialInfo } from "./MaterialInfo";
|
||||||
import { Industry } from "./Industry";
|
import { Industry } from "./Industry";
|
||||||
import { ProductRatingWeights } from "./ProductRatingWeights";
|
import { IndustriesData } from "./IndustryData";
|
||||||
|
|
||||||
import { createCityMap } from "../Locations/createCityMap";
|
import { createCityMap } from "../Locations/createCityMap";
|
||||||
|
|
||||||
@ -244,12 +244,12 @@ export class Product {
|
|||||||
for (const matName of Object.keys(industry.reqMats)) {
|
for (const matName of Object.keys(industry.reqMats)) {
|
||||||
const reqMat = industry.reqMats[matName];
|
const reqMat = industry.reqMats[matName];
|
||||||
if (reqMat === undefined) continue;
|
if (reqMat === undefined) continue;
|
||||||
this.siz += MaterialSizes[matName] * reqMat;
|
this.siz += MaterialInfo[matName][1] * reqMat;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
calculateRating(industry: Industry): void {
|
calculateRating(industry: Industry): void {
|
||||||
const weights = ProductRatingWeights[industry.type];
|
const weights = IndustriesData[industry.type].ProductRatingWeights;
|
||||||
if (!weights) return console.error(`Could not find product rating weights for: ${industry}`);
|
if (!weights) return console.error(`Could not find product rating weights for: ${industry}`);
|
||||||
this.rat = 0;
|
this.rat = 0;
|
||||||
this.rat += weights.Quality ? this.qlt * weights.Quality : 0;
|
this.rat += weights.Quality ? this.qlt * weights.Quality : 0;
|
||||||
|
@ -1,68 +0,0 @@
|
|||||||
import { IndustryType } from "./IndustryData";
|
|
||||||
|
|
||||||
export interface IProductRatingWeight {
|
|
||||||
Aesthetics?: number;
|
|
||||||
Durability?: number;
|
|
||||||
Features?: number;
|
|
||||||
Quality?: number;
|
|
||||||
Performance?: number;
|
|
||||||
Reliability?: number;
|
|
||||||
}
|
|
||||||
//TODO: Move this to IndustryData
|
|
||||||
export const ProductRatingWeights: Partial<Record<IndustryType, IProductRatingWeight>> = {
|
|
||||||
[IndustryType.Food]: {
|
|
||||||
Quality: 0.7,
|
|
||||||
Durability: 0.1,
|
|
||||||
Aesthetics: 0.2,
|
|
||||||
},
|
|
||||||
[IndustryType.Tobacco]: {
|
|
||||||
Quality: 0.4,
|
|
||||||
Durability: 0.2,
|
|
||||||
Reliability: 0.2,
|
|
||||||
Aesthetics: 0.2,
|
|
||||||
},
|
|
||||||
[IndustryType.Pharmaceutical]: {
|
|
||||||
Quality: 0.2,
|
|
||||||
Performance: 0.2,
|
|
||||||
Durability: 0.1,
|
|
||||||
Reliability: 0.3,
|
|
||||||
Features: 0.2,
|
|
||||||
},
|
|
||||||
[IndustryType.Computers]: {
|
|
||||||
Quality: 0.15,
|
|
||||||
Performance: 0.25,
|
|
||||||
Durability: 0.25,
|
|
||||||
Reliability: 0.2,
|
|
||||||
Aesthetics: 0.05,
|
|
||||||
Features: 0.1,
|
|
||||||
},
|
|
||||||
[IndustryType.Robotics]: {
|
|
||||||
Quality: 0.1,
|
|
||||||
Performance: 0.2,
|
|
||||||
Durability: 0.2,
|
|
||||||
Reliability: 0.2,
|
|
||||||
Aesthetics: 0.1,
|
|
||||||
Features: 0.2,
|
|
||||||
},
|
|
||||||
[IndustryType.Software]: {
|
|
||||||
Quality: 0.2,
|
|
||||||
Performance: 0.2,
|
|
||||||
Reliability: 0.2,
|
|
||||||
Durability: 0.2,
|
|
||||||
Features: 0.2,
|
|
||||||
},
|
|
||||||
[IndustryType.Healthcare]: {
|
|
||||||
Quality: 0.4,
|
|
||||||
Performance: 0.1,
|
|
||||||
Durability: 0.1,
|
|
||||||
Reliability: 0.3,
|
|
||||||
Features: 0.1,
|
|
||||||
},
|
|
||||||
[IndustryType.RealEstate]: {
|
|
||||||
Quality: 0.2,
|
|
||||||
Durability: 0.25,
|
|
||||||
Reliability: 0.1,
|
|
||||||
Aesthetics: 0.35,
|
|
||||||
Features: 0.1,
|
|
||||||
},
|
|
||||||
};
|
|
@ -1,7 +1,7 @@
|
|||||||
import { Material } from "./Material";
|
import { Material } from "./Material";
|
||||||
import { Corporation } from "./Corporation";
|
import { Corporation } from "./Corporation";
|
||||||
import { Industry } from "./Industry";
|
import { Industry } from "./Industry";
|
||||||
import { MaterialSizes } from "./MaterialSizes";
|
import { MaterialInfo } from "./MaterialInfo";
|
||||||
import { Generic_fromJSON, Generic_toJSON, IReviverValue, Reviver } from "../utils/JSONReviver";
|
import { Generic_fromJSON, Generic_toJSON, IReviverValue, Reviver } from "../utils/JSONReviver";
|
||||||
import { exceptionAlert } from "../utils/helpers/exceptionAlert";
|
import { exceptionAlert } from "../utils/helpers/exceptionAlert";
|
||||||
|
|
||||||
@ -86,8 +86,8 @@ export class Warehouse {
|
|||||||
this.sizeUsed = 0;
|
this.sizeUsed = 0;
|
||||||
for (const matName of Object.keys(this.materials)) {
|
for (const matName of Object.keys(this.materials)) {
|
||||||
const mat = this.materials[matName];
|
const mat = this.materials[matName];
|
||||||
if (MaterialSizes.hasOwnProperty(matName)) {
|
if (MaterialInfo.hasOwnProperty(matName)) {
|
||||||
this.sizeUsed += mat.qty * MaterialSizes[matName];
|
this.sizeUsed += mat.qty * MaterialInfo[matName][1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.sizeUsed > this.size) {
|
if (this.sizeUsed > this.size) {
|
||||||
|
@ -77,7 +77,7 @@ export const CorporationConstants = {
|
|||||||
"ABC SalesBots",
|
"ABC SalesBots",
|
||||||
"Project Insight",
|
"Project Insight",
|
||||||
],
|
],
|
||||||
AllResearch: [
|
BaseResearch: [
|
||||||
"Hi-Tech R&D Laboratory",
|
"Hi-Tech R&D Laboratory",
|
||||||
"AutoBrew",
|
"AutoBrew",
|
||||||
"AutoPartyManager",
|
"AutoPartyManager",
|
||||||
@ -96,12 +96,8 @@ export const CorporationConstants = {
|
|||||||
"Overclock",
|
"Overclock",
|
||||||
"Self-Correcting Assemblers",
|
"Self-Correcting Assemblers",
|
||||||
"Sti.mu",
|
"Sti.mu",
|
||||||
"sudo.Assist",
|
|
||||||
"uPgrade: Capacity.I",
|
|
||||||
"uPgrade: Capacity.II",
|
|
||||||
"uPgrade: Dashboard",
|
|
||||||
"uPgrade: Fulcrum",
|
|
||||||
],
|
],
|
||||||
|
ProdResearch: ["uPgrade: Capacity.I", "uPgrade: Capacity.II", "uPgrade: Dashboard", "uPgrade: Fulcrum"],
|
||||||
FundingRoundShares: [0.1, 0.35, 0.25, 0.2],
|
FundingRoundShares: [0.1, 0.35, 0.25, 0.2],
|
||||||
FundingRoundMultiplier: [4, 3, 3, 2.5],
|
FundingRoundMultiplier: [4, 3, 3, 2.5],
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ export const CorporationUpgrades: Record<CorporationUpgradeIndex, CorporationUpg
|
|||||||
"to consumers through their dreams. Each level of this upgrade provides a passive " +
|
"to consumers through their dreams. Each level of this upgrade provides a passive " +
|
||||||
"increase in awareness of all of your companies (divisions) by 0.004 / market cycle," +
|
"increase in awareness of all of your companies (divisions) by 0.004 / market cycle," +
|
||||||
"and in popularity by 0.001 / market cycle. A market cycle is approximately " +
|
"and in popularity by 0.001 / market cycle. A market cycle is approximately " +
|
||||||
"15 seconds.",
|
"10 seconds.",
|
||||||
},
|
},
|
||||||
|
|
||||||
//Makes advertising more effective
|
//Makes advertising more effective
|
||||||
|
@ -7,7 +7,7 @@ import { Warehouse } from "../Warehouse";
|
|||||||
import { SmartSupplyModal } from "./modals/SmartSupplyModal";
|
import { SmartSupplyModal } from "./modals/SmartSupplyModal";
|
||||||
import { ProductElem } from "./ProductElem";
|
import { ProductElem } from "./ProductElem";
|
||||||
import { MaterialElem } from "./MaterialElem";
|
import { MaterialElem } from "./MaterialElem";
|
||||||
import { MaterialSizes } from "../MaterialSizes";
|
import { MaterialInfo } from "../MaterialInfo";
|
||||||
|
|
||||||
import { numeralWrapper } from "../../ui/numeralFormat";
|
import { numeralWrapper } from "../../ui/numeralFormat";
|
||||||
|
|
||||||
@ -122,11 +122,11 @@ function WarehouseRoot(props: IProps): React.ReactElement {
|
|||||||
const breakdownItems: JSX.Element[] = [];
|
const breakdownItems: JSX.Element[] = [];
|
||||||
for (const matName of Object.keys(props.warehouse.materials)) {
|
for (const matName of Object.keys(props.warehouse.materials)) {
|
||||||
const mat = props.warehouse.materials[matName];
|
const mat = props.warehouse.materials[matName];
|
||||||
if (!MaterialSizes.hasOwnProperty(matName)) continue;
|
if (!MaterialInfo.hasOwnProperty(matName)) continue;
|
||||||
if (mat.qty === 0) continue;
|
if (mat.qty === 0) continue;
|
||||||
breakdownItems.push(
|
breakdownItems.push(
|
||||||
<>
|
<>
|
||||||
{matName}: {numeralWrapper.format(mat.qty * MaterialSizes[matName], "0,0.0")}
|
{matName}: {numeralWrapper.format(mat.qty * MaterialInfo[matName][1], "0,0.0")}
|
||||||
</>,
|
</>,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { dialogBoxCreate } from "../../../ui/React/DialogBox";
|
import { dialogBoxCreate } from "../../../ui/React/DialogBox";
|
||||||
import { MaterialSizes } from "../../MaterialSizes";
|
import { MaterialInfo } from "../../MaterialInfo";
|
||||||
import { Warehouse } from "../../Warehouse";
|
import { Warehouse } from "../../Warehouse";
|
||||||
import { Material } from "../../Material";
|
import { Material } from "../../Material";
|
||||||
import { numeralWrapper } from "../../../ui/numeralFormat";
|
import { numeralWrapper } from "../../../ui/numeralFormat";
|
||||||
@ -33,7 +33,7 @@ function BulkPurchaseSection(props: IBPProps): React.ReactElement {
|
|||||||
const parsedAmt = parseFloat(props.amount);
|
const parsedAmt = parseFloat(props.amount);
|
||||||
const cost = parsedAmt * props.mat.bCost;
|
const cost = parsedAmt * props.mat.bCost;
|
||||||
|
|
||||||
const matSize = MaterialSizes[props.mat.name];
|
const matSize = MaterialInfo[props.mat.name][1];
|
||||||
const maxAmount = (props.warehouse.size - props.warehouse.sizeUsed) / matSize;
|
const maxAmount = (props.warehouse.size - props.warehouse.sizeUsed) / matSize;
|
||||||
|
|
||||||
if (parsedAmt > maxAmount) {
|
if (parsedAmt > maxAmount) {
|
||||||
|
@ -349,6 +349,7 @@ const grafting = {
|
|||||||
const corporation = {
|
const corporation = {
|
||||||
hasCorporation: 0,
|
hasCorporation: 0,
|
||||||
getMaterialNames: 0,
|
getMaterialNames: 0,
|
||||||
|
getConstants: 0,
|
||||||
getIndustryTypes: 0,
|
getIndustryTypes: 0,
|
||||||
getEmployeePositions: 0,
|
getEmployeePositions: 0,
|
||||||
getUnlockables: 0,
|
getUnlockables: 0,
|
||||||
|
@ -8,6 +8,9 @@ import { Industry } from "../Corporation/Industry";
|
|||||||
import { Corporation } from "../Corporation/Corporation";
|
import { Corporation } from "../Corporation/Corporation";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
productInfo as NSProduct,
|
||||||
|
materialInfo as NSMaterial,
|
||||||
|
divisionInfo as NSDivisionInfo,
|
||||||
Corporation as NSCorporation,
|
Corporation as NSCorporation,
|
||||||
Division as NSDivision,
|
Division as NSDivision,
|
||||||
WarehouseAPI,
|
WarehouseAPI,
|
||||||
@ -60,6 +63,7 @@ import { InternalAPI, NetscriptContext } from "../Netscript/APIWrapper";
|
|||||||
import { assertEnumMember, helpers } from "../Netscript/NetscriptHelpers";
|
import { assertEnumMember, helpers } from "../Netscript/NetscriptHelpers";
|
||||||
import { checkEnum } from "../utils/helpers/enum";
|
import { checkEnum } from "../utils/helpers/enum";
|
||||||
import { CityName } from "../Locations/data/CityNames";
|
import { CityName } from "../Locations/data/CityNames";
|
||||||
|
import { MaterialInfo } from "../Corporation/MaterialInfo";
|
||||||
|
|
||||||
export function NetscriptCorporation(): InternalAPI<NSCorporation> {
|
export function NetscriptCorporation(): InternalAPI<NSCorporation> {
|
||||||
function createCorporation(corporationName: string, selfFund = true): boolean {
|
function createCorporation(corporationName: string, selfFund = true): boolean {
|
||||||
@ -115,10 +119,6 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
|
|||||||
return baseCost * Math.pow(priceMult, level);
|
return baseCost * Math.pow(priceMult, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getExpandCityCost(): number {
|
|
||||||
return CorporationConstants.OfficeInitialCost;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getInvestmentOffer(): InvestmentOffer {
|
function getInvestmentOffer(): InvestmentOffer {
|
||||||
const corporation = getCorporation();
|
const corporation = getCorporation();
|
||||||
if (
|
if (
|
||||||
@ -285,11 +285,59 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getDivisionConstants(): Record<string, NSDivisionInfo> {
|
||||||
|
const divObject: Record<string, NSDivisionInfo> = {};
|
||||||
|
for (const [ind, type] of Object.entries(IndustryType)) {
|
||||||
|
divObject[ind] = {
|
||||||
|
type: type,
|
||||||
|
cost: IndustriesData[type].startingCost,
|
||||||
|
requiredMaterials: IndustriesData[type].reqMats,
|
||||||
|
makesMaterials: IndustriesData[type].prodMats ? true : false,
|
||||||
|
makesProducts: IndustriesData[type].product ? true : false,
|
||||||
|
};
|
||||||
|
if (divObject[ind].makesProducts) {
|
||||||
|
divObject[ind].productType = IndustriesData[type].product?.name;
|
||||||
|
}
|
||||||
|
if (divObject[ind].makesMaterials) {
|
||||||
|
divObject[ind].producedMaterials = IndustriesData[type].prodMats;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return divObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getProductInfo(): Record<string, NSProduct> {
|
||||||
|
const prodsObject: Record<string, NSProduct> = {};
|
||||||
|
for (const [ind, type] of Object.entries(IndustryType)) {
|
||||||
|
if (typeof IndustriesData[type].product !== "undefined") {
|
||||||
|
prodsObject[ind] = {
|
||||||
|
requiredMaterials: Object.keys(IndustriesData[type].reqMats),
|
||||||
|
size: 0,
|
||||||
|
division: type,
|
||||||
|
};
|
||||||
|
prodsObject[ind].type = IndustriesData[type].product?.name;
|
||||||
|
let totSize = 0;
|
||||||
|
for (const mat of prodsObject[ind].requiredMaterials) {
|
||||||
|
totSize += MaterialInfo[mat][1];
|
||||||
|
}
|
||||||
|
prodsObject[ind].size = totSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return prodsObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMaterialInfo(): Record<string, NSMaterial> {
|
||||||
|
const matsObject: Record<string, NSMaterial> = {};
|
||||||
|
for (const [mat, info] of Object.entries(MaterialInfo)) {
|
||||||
|
matsObject[mat] = {
|
||||||
|
name: info[0],
|
||||||
|
size: info[1],
|
||||||
|
prodMult: info[2],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return matsObject;
|
||||||
|
}
|
||||||
|
|
||||||
const warehouseAPI: InternalAPI<WarehouseAPI> = {
|
const warehouseAPI: InternalAPI<WarehouseAPI> = {
|
||||||
getPurchaseWarehouseCost: (ctx) => () => {
|
|
||||||
checkAccess(ctx, 7);
|
|
||||||
return CorporationConstants.WarehouseInitialCost;
|
|
||||||
},
|
|
||||||
getUpgradeWarehouseCost:
|
getUpgradeWarehouseCost:
|
||||||
(ctx) =>
|
(ctx) =>
|
||||||
(_divisionName, _cityName, _amt = 1) => {
|
(_divisionName, _cityName, _amt = 1) => {
|
||||||
@ -710,22 +758,22 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
|
|||||||
...warehouseAPI,
|
...warehouseAPI,
|
||||||
...officeAPI,
|
...officeAPI,
|
||||||
hasCorporation: () => () => !!Player.corporation,
|
hasCorporation: () => () => !!Player.corporation,
|
||||||
// Todo: Just remove these functions and provide enums?
|
getConstants: (ctx) => () => {
|
||||||
getMaterialNames: (ctx) => () => {
|
|
||||||
checkAccess(ctx);
|
checkAccess(ctx);
|
||||||
return [...CorporationConstants.AllMaterials];
|
return {
|
||||||
},
|
coffeeCost: 5e8,
|
||||||
getUnlockables: (ctx) => () => {
|
states: [...CorporationConstants.AllCorporationStates],
|
||||||
checkAccess(ctx);
|
bribeToRepRatio: CorporationConstants.BribeToRepRatio,
|
||||||
return [...CorporationConstants.AllUnlocks];
|
cityExpandCost: CorporationConstants.OfficeInitialCost,
|
||||||
},
|
warehousePurchaseCost: CorporationConstants.WarehouseInitialCost,
|
||||||
getUpgradeNames: (ctx) => () => {
|
baseMaxProducts: CorporationConstants.BaseMaxProducts,
|
||||||
checkAccess(ctx);
|
products: getProductInfo(),
|
||||||
return [...CorporationConstants.AllUpgrades];
|
materials: getMaterialInfo(),
|
||||||
},
|
unlocks: [...CorporationConstants.AllUnlocks],
|
||||||
getResearchNames: (ctx) => () => {
|
upgrades: [...CorporationConstants.AllUpgrades],
|
||||||
checkAccess(ctx);
|
researches: { base: [...CorporationConstants.BaseResearch], product: [...CorporationConstants.ProdResearch] },
|
||||||
return [...CorporationConstants.AllResearch];
|
divisions: getDivisionConstants(),
|
||||||
|
};
|
||||||
},
|
},
|
||||||
expandIndustry: (ctx) => (_industryName, _divisionName) => {
|
expandIndustry: (ctx) => (_industryName, _divisionName) => {
|
||||||
checkAccess(ctx);
|
checkAccess(ctx);
|
||||||
@ -826,18 +874,6 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
|
|||||||
const upgradeName = helpers.string(ctx, "upgradeName", _upgradeName);
|
const upgradeName = helpers.string(ctx, "upgradeName", _upgradeName);
|
||||||
return getUpgradeLevelCost(ctx, upgradeName);
|
return getUpgradeLevelCost(ctx, upgradeName);
|
||||||
},
|
},
|
||||||
getExpandIndustryCost: (ctx) => (_industryName) => {
|
|
||||||
checkAccess(ctx);
|
|
||||||
const industryName = helpers.string(ctx, "industryName", _industryName);
|
|
||||||
if (!checkEnum(IndustryType, industryName)) {
|
|
||||||
throw helpers.makeRuntimeErrorMsg(ctx, `Invalid industry: '${industryName}'`);
|
|
||||||
}
|
|
||||||
return IndustriesData[industryName].startingCost;
|
|
||||||
},
|
|
||||||
getExpandCityCost: (ctx) => () => {
|
|
||||||
checkAccess(ctx);
|
|
||||||
return getExpandCityCost();
|
|
||||||
},
|
|
||||||
getInvestmentOffer: (ctx) => () => {
|
getInvestmentOffer: (ctx) => () => {
|
||||||
checkAccess(ctx);
|
checkAccess(ctx);
|
||||||
return getInvestmentOffer();
|
return getInvestmentOffer();
|
||||||
|
@ -415,6 +415,9 @@ export function runScriptFromScript(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//prevent leading / from causing a bug
|
||||||
|
if (scriptname.startsWith("/")) scriptname = scriptname.slice(1);
|
||||||
|
|
||||||
if (typeof scriptname !== "string" || !Array.isArray(args)) {
|
if (typeof scriptname !== "string" || !Array.isArray(args)) {
|
||||||
workerScript.log(caller, () => `Invalid arguments: scriptname='${scriptname} args='${args}'`);
|
workerScript.log(caller, () => `Invalid arguments: scriptname='${scriptname} args='${args}'`);
|
||||||
console.error(`runScriptFromScript() failed due to invalid arguments`);
|
console.error(`runScriptFromScript() failed due to invalid arguments`);
|
||||||
|
123
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
123
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -7039,6 +7039,17 @@ declare enum IndustryType {
|
|||||||
RealEstate = "RealEstate",
|
RealEstate = "RealEstate",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Names of all cities
|
||||||
|
* @public */
|
||||||
|
declare enum CityName {
|
||||||
|
Aevum = "Aevum",
|
||||||
|
Chongqing = "Chongqing",
|
||||||
|
Sector12 = "Sector-12",
|
||||||
|
NewTokyo = "New Tokyo",
|
||||||
|
Ishima = "Ishima",
|
||||||
|
Volhaven = "Volhaven",
|
||||||
|
}
|
||||||
|
|
||||||
/** Names of all locations
|
/** Names of all locations
|
||||||
* @public */
|
* @public */
|
||||||
declare enum LocationName {
|
declare enum LocationName {
|
||||||
@ -7422,11 +7433,6 @@ export interface WarehouseAPI {
|
|||||||
* @param qty - Amount to limit to. Pass a negative value to remove the limit instead.
|
* @param qty - Amount to limit to. Pass a negative value to remove the limit instead.
|
||||||
*/
|
*/
|
||||||
limitProductProduction(divisionName: string, cityName: string, productName: string, qty: number): void;
|
limitProductProduction(divisionName: string, cityName: string, productName: string, qty: number): void;
|
||||||
/**
|
|
||||||
* Gets the cost to purchase a warehouse
|
|
||||||
* @returns cost
|
|
||||||
*/
|
|
||||||
getPurchaseWarehouseCost(): number;
|
|
||||||
/**
|
/**
|
||||||
* Gets the cost to upgrade a warehouse to the next level
|
* Gets the cost to upgrade a warehouse to the next level
|
||||||
* @param divisionName - Name of the division
|
* @param divisionName - Name of the division
|
||||||
@ -7483,34 +7489,13 @@ export interface Corporation extends WarehouseAPI, OfficeAPI {
|
|||||||
* @returns cost of the upgrade */
|
* @returns cost of the upgrade */
|
||||||
getUpgradeLevelCost(upgradeName: string): number;
|
getUpgradeLevelCost(upgradeName: string): number;
|
||||||
|
|
||||||
/** Gets the cost to expand into a new industry
|
|
||||||
* @param industryName - Name of the industry
|
|
||||||
* @returns cost */
|
|
||||||
getExpandIndustryCost(industryName: IndustryType | `${IndustryType}`): number;
|
|
||||||
|
|
||||||
/** Gets the cost to expand into a new city
|
|
||||||
* @returns cost */
|
|
||||||
getExpandCityCost(): number;
|
|
||||||
|
|
||||||
/** Get an offer for investment based on you companies current valuation
|
/** Get an offer for investment based on you companies current valuation
|
||||||
* @returns An offer of investment */
|
* @returns An offer of investment */
|
||||||
getInvestmentOffer(): InvestmentOffer;
|
getInvestmentOffer(): InvestmentOffer;
|
||||||
|
|
||||||
/** Get list of materials
|
/** Get corporation related constants
|
||||||
* @returns material names */
|
* @returns corporation related constants */
|
||||||
getMaterialNames(): string[];
|
getConstants(): CorpConstants;
|
||||||
|
|
||||||
/** Get list of one-time unlockable upgrades
|
|
||||||
* @returns unlockable upgrades names */
|
|
||||||
getUnlockables(): string[];
|
|
||||||
|
|
||||||
/** Get list of upgrade names
|
|
||||||
* @returns upgrade names */
|
|
||||||
getUpgradeNames(): string[];
|
|
||||||
|
|
||||||
/** Get list of research names
|
|
||||||
* @returns research names */
|
|
||||||
getResearchNames(): string[];
|
|
||||||
|
|
||||||
/** Accept investment based on you companies current valuation
|
/** Accept investment based on you companies current valuation
|
||||||
* @remarks
|
* @remarks
|
||||||
@ -7612,6 +7597,86 @@ interface CorporationInfo {
|
|||||||
divisions: Division[];
|
divisions: Division[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Corporation related constants
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
interface CorpConstants {
|
||||||
|
/** Corporation cycle states */
|
||||||
|
states: string[];
|
||||||
|
/** Unlockable upgrades */
|
||||||
|
unlocks: string[];
|
||||||
|
/** Levelable upgrades */
|
||||||
|
upgrades: string[];
|
||||||
|
/** Researches, product researches are only available to product making divisions */
|
||||||
|
researches: Record<string, string[]>;
|
||||||
|
/** Amount of funds required to bribe for 1 reputation */
|
||||||
|
bribeToRepRatio: number;
|
||||||
|
/** Amount of products a division can have without researches */
|
||||||
|
baseMaxProducts: number;
|
||||||
|
/** Cost to expand to another city within a division */
|
||||||
|
cityExpandCost: number;
|
||||||
|
/** Cost to purchase a warehouse in a city */
|
||||||
|
warehousePurchaseCost: number;
|
||||||
|
/** Cost of coffee per employee in an office */
|
||||||
|
coffeeCost: number;
|
||||||
|
/** Array of all material types */
|
||||||
|
materials: Record<string, materialInfo>;
|
||||||
|
/** Array of all product types */
|
||||||
|
products: Record<string, productInfo>;
|
||||||
|
/** Array of all division types */
|
||||||
|
divisions: Record<string, divisionInfo>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Corporation material information
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
interface materialInfo {
|
||||||
|
/** Name of the material */
|
||||||
|
name: string;
|
||||||
|
/** Size of the material */
|
||||||
|
size: number;
|
||||||
|
/** Revenue per second this cycle */
|
||||||
|
prodMult: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Corporation product information
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
interface productInfo {
|
||||||
|
/** Product type */
|
||||||
|
type?: string;
|
||||||
|
/** Size of the product */
|
||||||
|
size: number;
|
||||||
|
/** Materials required to make the product */
|
||||||
|
requiredMaterials: string[];
|
||||||
|
/** Division type which makes the product */
|
||||||
|
division: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Corporation division information
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
interface divisionInfo {
|
||||||
|
/** Division type */
|
||||||
|
type: string;
|
||||||
|
/** Cost to expand to the division */
|
||||||
|
cost: number;
|
||||||
|
/** Materials required for production and their amounts */
|
||||||
|
requiredMaterials: Record<string, number>;
|
||||||
|
/** Materials produced */
|
||||||
|
producedMaterials?: string[];
|
||||||
|
/** Whether the division makes materials */
|
||||||
|
makesMaterials: boolean;
|
||||||
|
/** Whether the division makes products */
|
||||||
|
makesProducts: boolean;
|
||||||
|
/** Product type */
|
||||||
|
productType?: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Product in a warehouse
|
* Product in a warehouse
|
||||||
* @public
|
* @public
|
||||||
|
@ -77,6 +77,16 @@ export enum GymType {
|
|||||||
agility = "agi",
|
agility = "agi",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Names of all cities */
|
||||||
|
export enum CityName {
|
||||||
|
Aevum = "Aevum",
|
||||||
|
Chongqing = "Chongqing",
|
||||||
|
Sector12 = "Sector-12",
|
||||||
|
NewTokyo = "New Tokyo",
|
||||||
|
Ishima = "Ishima",
|
||||||
|
Volhaven = "Volhaven",
|
||||||
|
}
|
||||||
|
|
||||||
/** Names of all locations */
|
/** Names of all locations */
|
||||||
export enum LocationName {
|
export enum LocationName {
|
||||||
AevumAeroCorp = "AeroCorp",
|
AevumAeroCorp = "AeroCorp",
|
||||||
|
Loading…
Reference in New Issue
Block a user