CORPORATION: Rename functions in Actions.ts (#1272)

This should be a straight rename, no functionality changes.
This commit is contained in:
catloversg 2024-05-13 04:52:07 +07:00 committed by GitHub
parent 7f5bc5700e
commit 25afecc0ec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 146 additions and 146 deletions

@ -57,7 +57,7 @@ export function createCorporation(corporationName: string, selfFund: boolean, re
return true; return true;
} }
export function NewDivision(corporation: Corporation, industry: IndustryType, name: string): void { export function createDivision(corporation: Corporation, industry: IndustryType, name: string): void {
if (corporation.divisions.size >= corporation.maxDivisions) if (corporation.divisions.size >= corporation.maxDivisions)
throw new Error(`Cannot expand into ${industry} industry, too many divisions!`); throw new Error(`Cannot expand into ${industry} industry, too many divisions!`);
@ -124,7 +124,7 @@ export function purchaseOffice(corporation: Corporation, division: Division, cit
++corporation.numberOfOfficesAndWarehouses; ++corporation.numberOfOfficesAndWarehouses;
} }
export function IssueDividends(corporation: Corporation, rate: number): void { export function issueDividends(corporation: Corporation, rate: number): void {
if (isNaN(rate) || rate < 0 || rate > corpConstants.dividendMaxRate) { if (isNaN(rate) || rate < 0 || rate > corpConstants.dividendMaxRate) {
throw new Error(`Invalid value. Must be an number between 0 and ${corpConstants.dividendMaxRate}`); throw new Error(`Invalid value. Must be an number between 0 and ${corpConstants.dividendMaxRate}`);
} }
@ -132,7 +132,7 @@ export function IssueDividends(corporation: Corporation, rate: number): void {
corporation.dividendRate = rate; corporation.dividendRate = rate;
} }
export function GoPublic(corporation: Corporation, numShares: number): void { export function goPublic(corporation: Corporation, numShares: number): void {
const ceoOwnership = (corporation.numShares - numShares) / corporation.totalShares; const ceoOwnership = (corporation.numShares - numShares) / corporation.totalShares;
const initialSharePrice = corporation.getTargetSharePrice(ceoOwnership); const initialSharePrice = corporation.getTargetSharePrice(ceoOwnership);
@ -149,7 +149,7 @@ export function GoPublic(corporation: Corporation, numShares: number): void {
corporation.gainFunds(numShares * initialSharePrice, "public equity"); corporation.gainFunds(numShares * initialSharePrice, "public equity");
} }
export function IssueNewShares( export function issueNewShares(
corporation: Corporation, corporation: Corporation,
amount: number, amount: number,
): [profit: number, amount: number, privateShares: number] { ): [profit: number, amount: number, privateShares: number] {
@ -178,7 +178,7 @@ export function IssueNewShares(
return [profit, amount, privateShares]; return [profit, amount, privateShares];
} }
export function AcceptInvestmentOffer(corporation: Corporation): void { export function acceptInvestmentOffer(corporation: Corporation): void {
if ( if (
corporation.fundingRound >= corpConstants.fundingRoundShares.length || corporation.fundingRound >= corpConstants.fundingRoundShares.length ||
corporation.fundingRound >= corpConstants.fundingRoundMultiplier.length || corporation.fundingRound >= corpConstants.fundingRoundMultiplier.length ||
@ -198,7 +198,7 @@ export function AcceptInvestmentOffer(corporation: Corporation): void {
corporation.investorShares += investShares; corporation.investorShares += investShares;
} }
export function SellMaterial(material: Material, amount: string, price: string): void { export function sellMaterial(material: Material, amount: string, price: string): void {
if (price === "") price = "0"; if (price === "") price = "0";
if (amount === "") amount = "0"; if (amount === "") amount = "0";
let cost = price.replace(/\s+/g, ""); let cost = price.replace(/\s+/g, "");
@ -250,7 +250,7 @@ export function SellMaterial(material: Material, amount: string, price: string):
} }
} }
export function SellProduct(product: Product, city: CityName, amt: string, price: string, all: boolean): void { export function sellProduct(product: Product, city: CityName, amt: string, price: string, all: boolean): void {
//Parse price //Parse price
// initliaze newPrice with oldPrice as default // initliaze newPrice with oldPrice as default
let newPrice = product.cityData[city].desiredSellPrice; let newPrice = product.cityData[city].desiredSellPrice;
@ -320,15 +320,15 @@ export function SellProduct(product: Product, city: CityName, amt: string, price
} }
} }
export function SetSmartSupply(warehouse: Warehouse, smartSupply: boolean): void { export function setSmartSupply(warehouse: Warehouse, smartSupply: boolean): void {
warehouse.smartSupplyEnabled = smartSupply; warehouse.smartSupplyEnabled = smartSupply;
} }
export function SetSmartSupplyOption(warehouse: Warehouse, material: Material, useOption: CorpSmartSupplyOption): void { export function setSmartSupplyOption(warehouse: Warehouse, material: Material, useOption: CorpSmartSupplyOption): void {
warehouse.smartSupplyOptions[material.name] = useOption; warehouse.smartSupplyOptions[material.name] = useOption;
} }
export function BuyMaterial(division: Division, material: Material, amt: number): void { export function buyMaterial(division: Division, material: Material, amt: number): void {
if (!isRelevantMaterial(material.name, division)) { if (!isRelevantMaterial(material.name, division)) {
throw new Error(`${material.name} is not a relevant material for industry ${division.type}`); throw new Error(`${material.name} is not a relevant material for industry ${division.type}`);
} }
@ -338,7 +338,7 @@ export function BuyMaterial(division: Division, material: Material, amt: number)
material.buyAmount = amt; material.buyAmount = amt;
} }
export function BulkPurchase( export function bulkPurchase(
corp: Corporation, corp: Corporation,
division: Division, division: Division,
warehouse: Warehouse, warehouse: Warehouse,
@ -368,7 +368,7 @@ export function BulkPurchase(
} }
} }
export function SellShares(corporation: Corporation, numShares: number): number { export function sellShares(corporation: Corporation, numShares: number): number {
const failureReason = sellSharesFailureReason(corporation, numShares); const failureReason = sellSharesFailureReason(corporation, numShares);
if (failureReason) throw new Error(failureReason); if (failureReason) throw new Error(failureReason);
@ -383,7 +383,7 @@ export function SellShares(corporation: Corporation, numShares: number): number
return profit; return profit;
} }
export function BuyBackShares(corporation: Corporation, numShares: number): boolean { export function buyBackShares(corporation: Corporation, numShares: number): boolean {
const failureReason = buybackSharesFailureReason(corporation, numShares); const failureReason = buybackSharesFailureReason(corporation, numShares);
if (failureReason) throw new Error(failureReason); if (failureReason) throw new Error(failureReason);
@ -397,21 +397,21 @@ export function BuyBackShares(corporation: Corporation, numShares: number): bool
return true; return true;
} }
export function UpgradeOfficeSize(corp: Corporation, office: OfficeSpace, increase: PositiveInteger): void { export function upgradeOfficeSize(corp: Corporation, office: OfficeSpace, increase: PositiveInteger): void {
const cost = calculateOfficeSizeUpgradeCost(office.size, increase); const cost = calculateOfficeSizeUpgradeCost(office.size, increase);
if (corp.funds < cost) return; if (corp.funds < cost) return;
office.size += increase; office.size += increase;
corp.loseFunds(cost, "office"); corp.loseFunds(cost, "office");
} }
export function BuyTea(corp: Corporation, office: OfficeSpace): boolean { export function buyTea(corp: Corporation, office: OfficeSpace): boolean {
const cost = office.getTeaCost(); const cost = office.getTeaCost();
if (corp.funds < cost || !office.setTea()) return false; if (corp.funds < cost || !office.setTea()) return false;
corp.loseFunds(cost, "tea"); corp.loseFunds(cost, "tea");
return true; return true;
} }
export function ThrowParty(corp: Corporation, office: OfficeSpace, costPerEmployee: number): number { export function throwParty(corp: Corporation, office: OfficeSpace, costPerEmployee: number): number {
const mult = 1 + costPerEmployee / 10e6; const mult = 1 + costPerEmployee / 10e6;
const cost = costPerEmployee * office.numEmployees; const cost = costPerEmployee * office.numEmployees;
if (corp.funds < cost) { if (corp.funds < cost) {
@ -438,29 +438,29 @@ export function purchaseWarehouse(corp: Corporation, division: Division, city: C
++corp.numberOfOfficesAndWarehouses; ++corp.numberOfOfficesAndWarehouses;
} }
export function UpgradeWarehouseCost(warehouse: Warehouse, amt: number): number { export function upgradeWarehouseCost(warehouse: Warehouse, amt: number): number {
return Array.from(Array(amt).keys()).reduce( return Array.from(Array(amt).keys()).reduce(
(acc, index) => acc + corpConstants.warehouseSizeUpgradeCostBase * Math.pow(1.07, warehouse.level + 1 + index), (acc, index) => acc + corpConstants.warehouseSizeUpgradeCostBase * Math.pow(1.07, warehouse.level + 1 + index),
0, 0,
); );
} }
export function UpgradeWarehouse(corp: Corporation, division: Division, warehouse: Warehouse, amt = 1): void { export function upgradeWarehouse(corp: Corporation, division: Division, warehouse: Warehouse, amt = 1): void {
const sizeUpgradeCost = UpgradeWarehouseCost(warehouse, amt); const sizeUpgradeCost = upgradeWarehouseCost(warehouse, amt);
if (corp.funds < sizeUpgradeCost) return; if (corp.funds < sizeUpgradeCost) return;
warehouse.level += amt; warehouse.level += amt;
warehouse.updateSize(corp, division); warehouse.updateSize(corp, division);
corp.loseFunds(sizeUpgradeCost, "warehouse"); corp.loseFunds(sizeUpgradeCost, "warehouse");
} }
export function HireAdVert(corp: Corporation, division: Division): void { export function hireAdVert(corp: Corporation, division: Division): void {
const cost = division.getAdVertCost(); const cost = division.getAdVertCost();
if (corp.funds < cost) return; if (corp.funds < cost) return;
corp.loseFunds(cost, "advert"); corp.loseFunds(cost, "advert");
division.applyAdVert(corp); division.applyAdVert(corp);
} }
export function MakeProduct( export function makeProduct(
corp: Corporation, corp: Corporation,
division: Division, division: Division,
city: CityName, city: CityName,
@ -502,7 +502,7 @@ export function MakeProduct(
division.products.set(product.name, product); division.products.set(product.name, product);
} }
export function Research(researchingDivision: Division, researchName: CorpResearchName): void { export function research(researchingDivision: Division, researchName: CorpResearchName): void {
const corp = Player.corporation; const corp = Player.corporation;
if (!corp) return; if (!corp) return;
const researchTree = IndustryResearchTrees[researchingDivision.type]; const researchTree = IndustryResearchTrees[researchingDivision.type];
@ -541,7 +541,7 @@ export function Research(researchingDivision: Division, researchName: CorpResear
} }
/** Set a new export for a material. Throw on any invalid input. */ /** Set a new export for a material. Throw on any invalid input. */
export function ExportMaterial( export function exportMaterial(
targetDivision: Division, targetDivision: Division,
targetCity: CityName, targetCity: CityName,
material: Material, material: Material,
@ -592,13 +592,13 @@ Error encountered: ${error}`);
material.exports.push(exportObj); material.exports.push(exportObj);
} }
export function CancelExportMaterial(divisionName: string, cityName: CityName, material: Material): void { export function cancelExportMaterial(divisionName: string, cityName: CityName, material: Material): void {
const index = material.exports.findIndex((exp) => exp.division === divisionName && exp.city === cityName); const index = material.exports.findIndex((exp) => exp.division === divisionName && exp.city === cityName);
if (index === -1) return; if (index === -1) return;
material.exports.splice(index, 1); material.exports.splice(index, 1);
} }
export function LimitProductProduction(product: Product, cityName: CityName, quantity: number): void { export function limitProductProduction(product: Product, cityName: CityName, quantity: number): void {
if (quantity < 0 || isNaN(quantity)) { if (quantity < 0 || isNaN(quantity)) {
product.cityData[cityName].productionLimit = null; product.cityData[cityName].productionLimit = null;
} else { } else {
@ -606,7 +606,7 @@ export function LimitProductProduction(product: Product, cityName: CityName, qua
} }
} }
export function LimitMaterialProduction(material: Material, quantity: number): void { export function limitMaterialProduction(material: Material, quantity: number): void {
if (quantity < 0 || isNaN(quantity)) { if (quantity < 0 || isNaN(quantity)) {
material.productionLimit = null; material.productionLimit = null;
} else { } else {
@ -614,19 +614,19 @@ export function LimitMaterialProduction(material: Material, quantity: number): v
} }
} }
export function SetMaterialMarketTA1(material: Material, on: boolean): void { export function setMaterialMarketTA1(material: Material, on: boolean): void {
material.marketTa1 = on; material.marketTa1 = on;
} }
export function SetMaterialMarketTA2(material: Material, on: boolean): void { export function setMaterialMarketTA2(material: Material, on: boolean): void {
material.marketTa2 = on; material.marketTa2 = on;
} }
export function SetProductMarketTA1(product: Product, on: boolean): void { export function setProductMarketTA1(product: Product, on: boolean): void {
product.marketTa1 = on; product.marketTa1 = on;
} }
export function SetProductMarketTA2(product: Product, on: boolean): void { export function setProductMarketTA2(product: Product, on: boolean): void {
product.marketTa2 = on; product.marketTa2 = on;
} }

@ -4,7 +4,7 @@ import React, { useState } from "react";
import { OfficeSpace } from "../OfficeSpace"; import { OfficeSpace } from "../OfficeSpace";
import { CorpUnlockName, CorpEmployeeJob, CorpUpgradeName, CorpProductResearchName } from "@enums"; import { CorpUnlockName, CorpEmployeeJob, CorpUpgradeName, CorpProductResearchName } from "@enums";
import { BuyTea } from "../Actions"; import { buyTea } from "../Actions";
import { MoneyCost } from "./MoneyCost"; import { MoneyCost } from "./MoneyCost";
import { formatBigNumber, formatCorpStat, formatCorpMultiplier } from "../../ui/formatNumber"; import { formatBigNumber, formatCorpStat, formatCorpMultiplier } from "../../ui/formatNumber";
@ -375,7 +375,7 @@ export function DivisionOffice(props: OfficeProps): React.ReactElement {
<ButtonWithTooltip <ButtonWithTooltip
normalTooltip={"Provide your employees with tea to increase their energy"} normalTooltip={"Provide your employees with tea to increase their energy"}
disabledTooltip={teaDisabledText} disabledTooltip={teaDisabledText}
onClick={() => BuyTea(corp, props.office)} onClick={() => buyTea(corp, props.office)}
> >
{props.office.teaPending ? ( {props.office.teaPending ? (
"Buying Tea" "Buying Tea"

@ -4,7 +4,7 @@ import React, { useState } from "react";
import { MathJax } from "better-react-mathjax"; import { MathJax } from "better-react-mathjax";
import { CorpUnlockName, IndustryType } from "@enums"; import { CorpUnlockName, IndustryType } from "@enums";
import { HireAdVert } from "../Actions"; import { hireAdVert } from "../Actions";
import { formatBigNumber, formatCorpMultiplier } from "../../ui/formatNumber"; import { formatBigNumber, formatCorpMultiplier } from "../../ui/formatNumber";
import { createProgressBarText } from "../../utils/helpers/createProgressBarText"; import { createProgressBarText } from "../../utils/helpers/createProgressBarText";
import { MakeProductModal } from "./modals/MakeProductModal"; import { MakeProductModal } from "./modals/MakeProductModal";
@ -226,7 +226,7 @@ export function DivisionOverview(props: DivisionOverviewProps): React.ReactEleme
} }
disabledTooltip={division.getAdVertCost() > corp.funds ? "Insufficient corporation funds" : ""} disabledTooltip={division.getAdVertCost() > corp.funds ? "Insufficient corporation funds" : ""}
onClick={() => { onClick={() => {
HireAdVert(corp, division); hireAdVert(corp, division);
props.rerender(); props.rerender();
}} }}
> >

@ -10,7 +10,7 @@ import { dialogBoxCreate } from "../../ui/React/DialogBox";
import { IndustriesData } from "../data/IndustryData"; import { IndustriesData } from "../data/IndustryData";
import { IndustryType } from "@enums"; import { IndustryType } from "@enums";
import { useCorporation } from "./Context"; import { useCorporation } from "./Context";
import { NewDivision } from "../Actions"; import { createDivision } from "../Actions";
import { ButtonWithTooltip } from "../../ui/Components/ButtonWithTooltip"; import { ButtonWithTooltip } from "../../ui/Components/ButtonWithTooltip";
import { KEY } from "../../utils/helpers/keyCodes"; import { KEY } from "../../utils/helpers/keyCodes";
@ -38,7 +38,7 @@ export function NewDivisionTab(props: IProps): React.ReactElement {
function newDivision(): void { function newDivision(): void {
if (disabledText) return; if (disabledText) return;
try { try {
NewDivision(corp, industry, name); createDivision(corp, industry, name);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
return; return;

@ -7,7 +7,7 @@ import { useCorporation } from "../Context";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import { ButtonWithTooltip } from "../../../ui/Components/ButtonWithTooltip"; import { ButtonWithTooltip } from "../../../ui/Components/ButtonWithTooltip";
import { NumberInput } from "../../../ui/React/NumberInput"; import { NumberInput } from "../../../ui/React/NumberInput";
import { BuyBackShares } from "../../Actions"; import { buyBackShares } from "../../Actions";
import { KEY } from "../../../utils/helpers/keyCodes"; import { KEY } from "../../../utils/helpers/keyCodes";
import { buybackSharesFailureReason } from "../../helpers"; import { buybackSharesFailureReason } from "../../helpers";
@ -29,7 +29,7 @@ export function BuybackSharesModal(props: IProps): React.ReactElement {
function buy(): void { function buy(): void {
if (disabledText) return; if (disabledText) return;
try { try {
BuyBackShares(corp, shares); buyBackShares(corp, shares);
dialogBoxCreate( dialogBoxCreate(
<> <>
<Typography> <Typography>

@ -4,7 +4,7 @@ import { dialogBoxCreate } from "../../../ui/React/DialogBox";
import { Material } from "../../Material"; import { Material } from "../../Material";
import { Export } from "../../Export"; import { Export } from "../../Export";
import { Division } from "../../Division"; import { Division } from "../../Division";
import { ExportMaterial } from "../../Actions"; import * as actions from "../../Actions";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { useCorporation } from "../Context"; import { useCorporation } from "../Context";
import { isRelevantMaterial } from "../Helpers"; import { isRelevantMaterial } from "../Helpers";
@ -58,7 +58,7 @@ export function ExportModal(props: ExportModalProps): React.ReactElement {
function exportMaterial(): void { function exportMaterial(): void {
try { try {
if (!targetDivision || !targetCity) return; if (!targetDivision || !targetCity) return;
ExportMaterial(targetDivision, targetCity, props.mat, exportAmount); actions.exportMaterial(targetDivision, targetCity, props.mat, exportAmount);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }

@ -4,7 +4,7 @@ import { formatPercent, formatShares } from "../../../ui/formatNumber";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { Money } from "../../../ui/React/Money"; import { Money } from "../../../ui/React/Money";
import { useCorporation } from "../Context"; import { useCorporation } from "../Context";
import { AcceptInvestmentOffer } from "../../Actions"; import { acceptInvestmentOffer } from "../../Actions";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import Button from "@mui/material/Button"; import Button from "@mui/material/Button";
@ -23,7 +23,7 @@ export function FindInvestorsModal(props: IProps): React.ReactElement {
function findInvestors(): void { function findInvestors(): void {
if (shares === 0) return; if (shares === 0) return;
try { try {
AcceptInvestmentOffer(corp); acceptInvestmentOffer(corp);
dialogBoxCreate( dialogBoxCreate(
<> <>
<Typography>You accepted the investment offer.</Typography> <Typography>You accepted the investment offer.</Typography>

@ -10,7 +10,7 @@ import { NumberInput } from "../../../ui/React/NumberInput";
import Box from "@mui/material/Box"; import Box from "@mui/material/Box";
import { KEY } from "../../../utils/helpers/keyCodes"; import { KEY } from "../../../utils/helpers/keyCodes";
import { isPositiveInteger } from "../../../types"; import { isPositiveInteger } from "../../../types";
import { GoPublic } from "../../Actions"; import * as actions from "../../Actions";
interface IProps { interface IProps {
open: boolean; open: boolean;
@ -36,7 +36,7 @@ export function GoPublicModal(props: IProps): React.ReactElement {
function goPublic(): void { function goPublic(): void {
if (disabledText) return; if (disabledText) return;
try { try {
GoPublic(corp, shares); actions.goPublic(corp, shares);
dialogBoxCreate( dialogBoxCreate(
<Typography> <Typography>
<b>{corp.name}</b> went public and earned <Money money={shares * initialSharePrice} /> in its IPO. <b>{corp.name}</b> went public and earned <Money money={shares * initialSharePrice} /> in its IPO.

@ -4,7 +4,7 @@ import { Modal } from "../../../ui/React/Modal";
import { Money } from "../../../ui/React/Money"; import { Money } from "../../../ui/React/Money";
import { MoneyRate } from "../../../ui/React/MoneyRate"; import { MoneyRate } from "../../../ui/React/MoneyRate";
import * as corpConstants from "../../data/Constants"; import * as corpConstants from "../../data/Constants";
import { IssueDividends } from "../../Actions"; import * as actions from "../../Actions";
import { useCorporation } from "../Context"; import { useCorporation } from "../Context";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import TextField from "@mui/material/TextField"; import TextField from "@mui/material/TextField";
@ -26,7 +26,7 @@ export function IssueDividendsModal(props: IProps): React.ReactElement {
if (!canIssue) return; if (!canIssue) return;
if (percent === null) return; if (percent === null) return;
try { try {
IssueDividends(corp, percent / 100); actions.issueDividends(corp, percent / 100);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }

@ -8,7 +8,7 @@ import Typography from "@mui/material/Typography";
import { NumberInput } from "../../../ui/React/NumberInput"; import { NumberInput } from "../../../ui/React/NumberInput";
import { ButtonWithTooltip } from "../../../ui/Components/ButtonWithTooltip"; import { ButtonWithTooltip } from "../../../ui/Components/ButtonWithTooltip";
import { KEY } from "../../../utils/helpers/keyCodes"; import { KEY } from "../../../utils/helpers/keyCodes";
import { IssueNewShares } from "../../Actions"; import * as actions from "../../Actions";
import * as corpConstants from "../../data/Constants"; import * as corpConstants from "../../data/Constants";
import { issueNewSharesFailureReason } from "../../helpers"; import { issueNewSharesFailureReason } from "../../helpers";
@ -39,7 +39,7 @@ export function IssueNewSharesModal(props: IProps): React.ReactElement {
function issueNewShares(): void { function issueNewShares(): void {
if (disabledText) return; if (disabledText) return;
try { try {
const [profit, newShares, privateShares] = IssueNewShares(corp, shares); const [profit, newShares, privateShares] = actions.issueNewShares(corp, shares);
dialogBoxCreate( dialogBoxCreate(
<> <>
<Typography> <Typography>

@ -1,5 +1,5 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { LimitMaterialProduction } from "../../Actions"; import * as actions from "../../Actions";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import Button from "@mui/material/Button"; import Button from "@mui/material/Button";
@ -27,7 +27,7 @@ export function LimitMaterialProductionModal(props: IProps): React.ReactElement
function limitMaterialProduction(): void { function limitMaterialProduction(): void {
let qty = limit; let qty = limit;
if (qty === null) qty = -1; if (qty === null) qty = -1;
LimitMaterialProduction(props.material, qty); actions.limitMaterialProduction(props.material, qty);
props.onClose(); props.onClose();
} }

@ -1,7 +1,7 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import type { CityName } from "@enums"; import type { CityName } from "@enums";
import type { Product } from "../../Product"; import type { Product } from "../../Product";
import { LimitProductProduction } from "../../Actions"; import * as actions from "../../Actions";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import Button from "@mui/material/Button"; import Button from "@mui/material/Button";
@ -29,7 +29,7 @@ export function LimitProductProductionModal(props: IProps): React.ReactElement {
function limitProductProduction(): void { function limitProductProduction(): void {
let qty = limit; let qty = limit;
if (qty === null) qty = -1; if (qty === null) qty = -1;
LimitProductProduction(props.product, props.city, qty); actions.limitProductProduction(props.product, props.city, qty);
props.onClose(); props.onClose();
} }

@ -3,7 +3,7 @@ import { dialogBoxCreate } from "../../../ui/React/DialogBox";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { IndustriesData } from "../../data/IndustryData"; import { IndustriesData } from "../../data/IndustryData";
import { IndustryType } from "@enums"; import { IndustryType } from "@enums";
import { MakeProduct } from "../../Actions"; import * as actions from "../../Actions";
import { useCorporation, useDivision } from "../Context"; import { useCorporation, useDivision } from "../Context";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import TextField from "@mui/material/TextField"; import TextField from "@mui/material/TextField";
@ -46,7 +46,7 @@ export function MakeProductModal(props: IProps): React.ReactElement {
function makeProduct(): void { function makeProduct(): void {
if (isNaN(design) || isNaN(marketing)) return; if (isNaN(design) || isNaN(marketing)) return;
try { try {
MakeProduct(corp, division, city, name, design, marketing); actions.makeProduct(corp, division, city, name, design, marketing);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }

@ -4,7 +4,7 @@ import { MaterialInfo } from "../../MaterialInfo";
import { Warehouse } from "../../Warehouse"; import { Warehouse } from "../../Warehouse";
import { Material } from "../../Material"; import { Material } from "../../Material";
import { formatMatPurchaseAmount } from "../../../ui/formatNumber"; import { formatMatPurchaseAmount } from "../../../ui/formatNumber";
import { BulkPurchase, BuyMaterial } from "../../Actions"; import * as actions from "../../Actions";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { Money } from "../../../ui/React/Money"; import { Money } from "../../../ui/React/Money";
import { useCorporation, useDivision } from "../Context"; import { useCorporation, useDivision } from "../Context";
@ -66,7 +66,7 @@ function BulkPurchaseSection(props: IBPProps): React.ReactElement {
function bulkPurchase(): void { function bulkPurchase(): void {
try { try {
BulkPurchase(corp, division, props.warehouse, props.mat, parseFloat(buyAmt)); actions.bulkPurchase(corp, division, props.warehouse, props.mat, parseFloat(buyAmt));
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }
@ -118,7 +118,7 @@ export function PurchaseMaterialModal(props: IProps): React.ReactElement {
function purchaseMaterial(): void { function purchaseMaterial(): void {
if (buyAmt === null) return; if (buyAmt === null) return;
try { try {
BuyMaterial(division, props.mat, buyAmt); actions.buyMaterial(division, props.mat, buyAmt);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }

@ -6,7 +6,7 @@ import { formatCorpMultiplier } from "../../../ui/formatNumber";
import { IndustryResearchTrees } from "../../data/IndustryData"; import { IndustryResearchTrees } from "../../data/IndustryData";
import * as corpConstants from "../../data/Constants"; import * as corpConstants from "../../data/Constants";
import { Division } from "../../Division"; import { Division } from "../../Division";
import { Research } from "../../Actions"; import * as actions from "../../Actions";
import { Node } from "../../ResearchTree"; import { Node } from "../../ResearchTree";
import { ResearchMap } from "../../ResearchMap"; import { ResearchMap } from "../../ResearchMap";
import { Settings } from "../../../Settings/Settings"; import { Settings } from "../../../Settings/Settings";
@ -38,7 +38,7 @@ function Upgrade({ n, division }: INodeProps): React.ReactElement {
function research(): void { function research(): void {
if (n === null || disabled) return; if (n === null || disabled) return;
try { try {
Research(division, n.researchName); actions.research(division, n.researchName);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
return; return;

@ -6,7 +6,7 @@ import { Button, FormControlLabel, Switch, TextField, Tooltip, Typography } from
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { dialogBoxCreate } from "../../../ui/React/DialogBox"; import { dialogBoxCreate } from "../../../ui/React/DialogBox";
import { SellMaterial } from "../../Actions"; import * as actions from "../../Actions";
import { KEY } from "../../../utils/helpers/keyCodes"; import { KEY } from "../../../utils/helpers/keyCodes";
interface IProps { interface IProps {
@ -23,7 +23,7 @@ export function SellMaterialModal(props: IProps): React.ReactElement {
function sellMaterial(): void { function sellMaterial(): void {
try { try {
SellMaterial(props.mat, amt, price); actions.sellMaterial(props.mat, amt, price);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }

@ -7,7 +7,7 @@ import { Button, FormControlLabel, Switch, TextField, Tooltip, Typography } from
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { dialogBoxCreate } from "../../../ui/React/DialogBox"; import { dialogBoxCreate } from "../../../ui/React/DialogBox";
import { SellProduct } from "../../Actions"; import * as actions from "../../Actions";
import { KEY } from "../../../utils/helpers/keyCodes"; import { KEY } from "../../../utils/helpers/keyCodes";
interface IProps { interface IProps {
@ -30,7 +30,7 @@ export function SellProductModal(props: IProps): React.ReactElement {
function sellProduct(): void { function sellProduct(): void {
try { try {
SellProduct(props.product, props.city, iQty, px, checked); actions.sellProduct(props.product, props.city, iQty, px, checked);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }

@ -7,7 +7,7 @@ import { useCorporation } from "../Context";
import * as corpConstants from "../../data/Constants"; import * as corpConstants from "../../data/Constants";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import { ButtonWithTooltip } from "../../../ui/Components/ButtonWithTooltip"; import { ButtonWithTooltip } from "../../../ui/Components/ButtonWithTooltip";
import { SellShares } from "../../Actions"; import { sellShares } from "../../Actions";
import { KEY } from "../../../utils/helpers/keyCodes"; import { KEY } from "../../../utils/helpers/keyCodes";
import { NumberInput } from "../../../ui/React/NumberInput"; import { NumberInput } from "../../../ui/React/NumberInput";
import { sellSharesFailureReason } from "../../helpers"; import { sellSharesFailureReason } from "../../helpers";
@ -30,7 +30,7 @@ export function SellSharesModal(props: IProps): React.ReactElement {
function sell(): void { function sell(): void {
if (disabledText) return; if (disabledText) return;
try { try {
SellShares(corp, shares); sellShares(corp, shares);
dialogBoxCreate( dialogBoxCreate(
<> <>
<Typography> <Typography>

@ -1,7 +1,7 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Warehouse } from "../../Warehouse"; import { Warehouse } from "../../Warehouse";
import { SetSmartSupply, SetSmartSupplyOption } from "../../Actions"; import { setSmartSupply, setSmartSupplyOption } from "../../Actions";
import { dialogBoxCreate } from "../../../ui/React/DialogBox"; import { dialogBoxCreate } from "../../../ui/React/DialogBox";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { useDivision } from "../Context"; import { useDivision } from "../Context";
@ -26,7 +26,7 @@ function SSoption(props: ISSoptionProps): React.ReactElement {
try { try {
const matName = props.matName; const matName = props.matName;
const material = props.warehouse.materials[matName]; const material = props.warehouse.materials[matName];
SetSmartSupplyOption(props.warehouse, material, newValue); setSmartSupplyOption(props.warehouse, material, newValue);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }
@ -39,7 +39,7 @@ function SSoption(props: ISSoptionProps): React.ReactElement {
try { try {
const matName = props.matName; const matName = props.matName;
const material = props.warehouse.materials[matName]; const material = props.warehouse.materials[matName];
SetSmartSupplyOption(props.warehouse, material, newValue); setSmartSupplyOption(props.warehouse, material, newValue);
} catch (err) { } catch (err) {
dialogBoxCreate(err + ""); dialogBoxCreate(err + "");
} }
@ -74,7 +74,7 @@ export function SmartSupplyModal(props: IProps): React.ReactElement {
// Smart Supply Checkbox // Smart Supply Checkbox
function smartSupplyOnChange(e: React.ChangeEvent<HTMLInputElement>): void { function smartSupplyOnChange(e: React.ChangeEvent<HTMLInputElement>): void {
SetSmartSupply(props.warehouse, e.target.checked); setSmartSupply(props.warehouse, e.target.checked);
rerender(); rerender();
} }

@ -2,7 +2,7 @@ import React, { useState } from "react";
import { formatMultiplier, formatPercent } from "../../../ui/formatNumber"; import { formatMultiplier, formatPercent } from "../../../ui/formatNumber";
import { dialogBoxCreate } from "../../../ui/React/DialogBox"; import { dialogBoxCreate } from "../../../ui/React/DialogBox";
import { OfficeSpace } from "../../OfficeSpace"; import { OfficeSpace } from "../../OfficeSpace";
import { ThrowParty } from "../../Actions"; import * as actions from "../../Actions";
import { MoneyCost } from "../MoneyCost"; import { MoneyCost } from "../MoneyCost";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { useCorporation } from "../Context"; import { useCorporation } from "../Context";
@ -37,7 +37,7 @@ export function ThrowPartyModal(props: IProps): React.ReactElement {
} else if (!canParty) { } else if (!canParty) {
dialogBoxCreate("You don't have enough company funds to throw a party!"); dialogBoxCreate("You don't have enough company funds to throw a party!");
} else { } else {
const mult = ThrowParty(corp, props.office, cost); const mult = actions.throwParty(corp, props.office, cost);
// Each 10% multiplier gives an extra flat +1 to morale to make recovering from low morale easier. // Each 10% multiplier gives an extra flat +1 to morale to make recovering from low morale easier.
const increase = mult > 1 ? (mult - 1) * 0.1 : 0; const increase = mult > 1 ? (mult - 1) * 0.1 : 0;

@ -3,7 +3,7 @@ import { formatMoney } from "../../../ui/formatNumber";
import * as corpConstants from "../../data/Constants"; import * as corpConstants from "../../data/Constants";
import { OfficeSpace } from "../../OfficeSpace"; import { OfficeSpace } from "../../OfficeSpace";
import { Corporation } from "../../Corporation"; import { Corporation } from "../../Corporation";
import { UpgradeOfficeSize } from "../../Actions"; import { upgradeOfficeSize } from "../../Actions";
import { Modal } from "../../../ui/React/Modal"; import { Modal } from "../../../ui/React/Modal";
import { useCorporation } from "../Context"; import { useCorporation } from "../Context";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
@ -29,7 +29,7 @@ function UpgradeSizeButton(props: IUpgradeButton): React.ReactElement {
return; return;
} }
UpgradeOfficeSize(corp, props.office, increase); upgradeOfficeSize(corp, props.office, increase);
props.rerender(); props.rerender();
props.onClose(); props.onClose();
} }

@ -19,37 +19,37 @@ import {
} from "@nsdefs"; } from "@nsdefs";
import { import {
NewDivision, createDivision,
purchaseOffice, purchaseOffice,
IssueDividends, issueDividends,
GoPublic, goPublic,
IssueNewShares, issueNewShares,
AcceptInvestmentOffer, acceptInvestmentOffer,
SellMaterial, sellMaterial,
SellProduct, sellProduct,
SetSmartSupply, setSmartSupply,
BuyMaterial, buyMaterial,
UpgradeOfficeSize, upgradeOfficeSize,
purchaseWarehouse, purchaseWarehouse,
UpgradeWarehouse, upgradeWarehouse,
BuyTea, buyTea,
ThrowParty, throwParty,
HireAdVert, hireAdVert,
MakeProduct, makeProduct,
Research, research,
ExportMaterial, exportMaterial,
CancelExportMaterial, cancelExportMaterial,
SetMaterialMarketTA1, setMaterialMarketTA1,
SetMaterialMarketTA2, setMaterialMarketTA2,
SetProductMarketTA1, setProductMarketTA1,
SetProductMarketTA2, setProductMarketTA2,
BulkPurchase, bulkPurchase,
SellShares, sellShares,
BuyBackShares, buyBackShares,
SetSmartSupplyOption, setSmartSupplyOption,
LimitMaterialProduction, limitMaterialProduction,
LimitProductProduction, limitProductProduction,
UpgradeWarehouseCost, upgradeWarehouseCost,
createCorporation, createCorporation,
removeDivision, removeDivision,
bribe, bribe,
@ -184,7 +184,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
throw helpers.errorMessage(ctx, "You must provide a positive number"); throw helpers.errorMessage(ctx, "You must provide a positive number");
} }
const warehouse = getWarehouse(divisionName, cityName); const warehouse = getWarehouse(divisionName, cityName);
return UpgradeWarehouseCost(warehouse, amt); return upgradeWarehouseCost(warehouse, amt);
}, },
hasWarehouse: (ctx) => (_divisionName, _cityName) => { hasWarehouse: (ctx) => (_divisionName, _cityName) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -273,7 +273,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
if (amt < 1) { if (amt < 1) {
throw helpers.errorMessage(ctx, "You must provide a positive number"); throw helpers.errorMessage(ctx, "You must provide a positive number");
} }
UpgradeWarehouse(corporation, getDivision(divisionName), getWarehouse(divisionName, cityName), amt); upgradeWarehouse(corporation, getDivision(divisionName), getWarehouse(divisionName, cityName), amt);
}, },
sellMaterial: (ctx) => (_divisionName, _cityName, _materialName, _amt, _price) => { sellMaterial: (ctx) => (_divisionName, _cityName, _materialName, _amt, _price) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -283,7 +283,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const amt = helpers.string(ctx, "amt", _amt); const amt = helpers.string(ctx, "amt", _amt);
const price = helpers.string(ctx, "price", _price); const price = helpers.string(ctx, "price", _price);
const material = getMaterial(divisionName, cityName, materialName); const material = getMaterial(divisionName, cityName, materialName);
SellMaterial(material, amt, price); sellMaterial(material, amt, price);
}, },
sellProduct: sellProduct:
(ctx) => (ctx) =>
@ -296,7 +296,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const price = helpers.string(ctx, "price", _price); const price = helpers.string(ctx, "price", _price);
const all = !!_all; const all = !!_all;
const product = getProduct(divisionName, productName); const product = getProduct(divisionName, productName);
SellProduct(product, cityName, amt, price, all); sellProduct(product, cityName, amt, price, all);
}, },
discontinueProduct: (ctx) => (_divisionName, _productName) => { discontinueProduct: (ctx) => (_divisionName, _productName) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -312,7 +312,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const warehouse = getWarehouse(divisionName, cityName); const warehouse = getWarehouse(divisionName, cityName);
if (!hasUnlock(CorpUnlockName.SmartSupply)) if (!hasUnlock(CorpUnlockName.SmartSupply))
throw helpers.errorMessage(ctx, `You have not purchased the Smart Supply upgrade!`); throw helpers.errorMessage(ctx, `You have not purchased the Smart Supply upgrade!`);
SetSmartSupply(warehouse, enabled); setSmartSupply(warehouse, enabled);
}, },
setSmartSupplyOption: (ctx) => (_divisionName, _cityName, _materialName, _option) => { setSmartSupplyOption: (ctx) => (_divisionName, _cityName, _materialName, _option) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -324,7 +324,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const option = getEnumHelper("SmartSupplyOption").nsGetMember(ctx, _option); const option = getEnumHelper("SmartSupplyOption").nsGetMember(ctx, _option);
if (!hasUnlock(CorpUnlockName.SmartSupply)) if (!hasUnlock(CorpUnlockName.SmartSupply))
throw helpers.errorMessage(ctx, `You have not purchased the Smart Supply upgrade!`); throw helpers.errorMessage(ctx, `You have not purchased the Smart Supply upgrade!`);
SetSmartSupplyOption(warehouse, material, option); setSmartSupplyOption(warehouse, material, option);
}, },
buyMaterial: (ctx) => (_divisionName, _cityName, _materialName, _amt) => { buyMaterial: (ctx) => (_divisionName, _cityName, _materialName, _amt) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -337,7 +337,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
if (amt < 0 || !Number.isFinite(amt)) if (amt < 0 || !Number.isFinite(amt))
throw new Error("Invalid value for amount field! Must be numeric and greater than or equal to 0"); throw new Error("Invalid value for amount field! Must be numeric and greater than or equal to 0");
const material = getMaterial(divisionName, cityName, materialName); const material = getMaterial(divisionName, cityName, materialName);
BuyMaterial(division, material, amt); buyMaterial(division, material, amt);
}, },
bulkPurchase: (ctx) => (_divisionName, _cityName, _materialName, _amt) => { bulkPurchase: (ctx) => (_divisionName, _cityName, _materialName, _amt) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -350,7 +350,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const amt = helpers.number(ctx, "amt", _amt); const amt = helpers.number(ctx, "amt", _amt);
const warehouse = getWarehouse(divisionName, cityName); const warehouse = getWarehouse(divisionName, cityName);
const material = getMaterial(divisionName, cityName, materialName); const material = getMaterial(divisionName, cityName, materialName);
BulkPurchase(corporation, division, warehouse, material, amt); bulkPurchase(corporation, division, warehouse, material, amt);
}, },
makeProduct: makeProduct:
(ctx) => (ctx) =>
@ -362,7 +362,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const designInvest = helpers.number(ctx, "designInvest", _designInvest); const designInvest = helpers.number(ctx, "designInvest", _designInvest);
const marketingInvest = helpers.number(ctx, "marketingInvest", _marketingInvest); const marketingInvest = helpers.number(ctx, "marketingInvest", _marketingInvest);
const corporation = getCorporation(); const corporation = getCorporation();
MakeProduct(corporation, getDivision(divisionName), cityName, productName, designInvest, marketingInvest); makeProduct(corporation, getDivision(divisionName), cityName, productName, designInvest, marketingInvest);
}, },
limitProductProduction: (ctx) => (_divisionName, _cityName, _productName, _qty) => { limitProductProduction: (ctx) => (_divisionName, _cityName, _productName, _qty) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -370,7 +370,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const cityName = getEnumHelper("CityName").nsGetMember(ctx, _cityName); const cityName = getEnumHelper("CityName").nsGetMember(ctx, _cityName);
const productName = helpers.string(ctx, "productName", _productName); const productName = helpers.string(ctx, "productName", _productName);
const qty = helpers.number(ctx, "qty", _qty); const qty = helpers.number(ctx, "qty", _qty);
LimitProductProduction(getProduct(divisionName, productName), cityName, qty); limitProductProduction(getProduct(divisionName, productName), cityName, qty);
}, },
exportMaterial: exportMaterial:
(ctx) => (ctx) =>
@ -386,7 +386,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const materialName = getEnumHelper("CorpMaterialName").nsGetMember(ctx, _materialName, "materialName"); const materialName = getEnumHelper("CorpMaterialName").nsGetMember(ctx, _materialName, "materialName");
const amt = helpers.string(ctx, "amt", _amt); const amt = helpers.string(ctx, "amt", _amt);
ExportMaterial(targetDivision, targetCity, getMaterial(sourceDivision, sourceCity, materialName), amt); exportMaterial(targetDivision, targetCity, getMaterial(sourceDivision, sourceCity, materialName), amt);
}, },
cancelExportMaterial: cancelExportMaterial:
(ctx) => (ctx) =>
@ -400,7 +400,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const targetDivision = helpers.string(ctx, "targetDivision", _targetDivision); const targetDivision = helpers.string(ctx, "targetDivision", _targetDivision);
const targetCity = getEnumHelper("CityName").nsGetMember(ctx, _targetCity, "targetCity"); const targetCity = getEnumHelper("CityName").nsGetMember(ctx, _targetCity, "targetCity");
const materialName = getEnumHelper("CorpMaterialName").nsGetMember(ctx, _materialName, "materialName"); const materialName = getEnumHelper("CorpMaterialName").nsGetMember(ctx, _materialName, "materialName");
CancelExportMaterial(targetDivision, targetCity, getMaterial(sourceDivision, sourceCity, materialName)); cancelExportMaterial(targetDivision, targetCity, getMaterial(sourceDivision, sourceCity, materialName));
}, },
limitMaterialProduction: (ctx) => (_divisionName, _cityName, _materialName, _qty) => { limitMaterialProduction: (ctx) => (_divisionName, _cityName, _materialName, _qty) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -408,7 +408,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const cityName = getEnumHelper("CityName").nsGetMember(ctx, _cityName); const cityName = getEnumHelper("CityName").nsGetMember(ctx, _cityName);
const materialName = getEnumHelper("CorpMaterialName").nsGetMember(ctx, _materialName, "materialName"); const materialName = getEnumHelper("CorpMaterialName").nsGetMember(ctx, _materialName, "materialName");
const qty = helpers.number(ctx, "qty", _qty); const qty = helpers.number(ctx, "qty", _qty);
LimitMaterialProduction(getMaterial(divisionName, cityName, materialName), qty); limitMaterialProduction(getMaterial(divisionName, cityName, materialName), qty);
}, },
setMaterialMarketTA1: (ctx) => (_divisionName, _cityName, _materialName, _on) => { setMaterialMarketTA1: (ctx) => (_divisionName, _cityName, _materialName, _on) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -418,7 +418,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const on = !!_on; const on = !!_on;
if (!getDivision(divisionName).hasResearch("Market-TA.I")) if (!getDivision(divisionName).hasResearch("Market-TA.I"))
throw helpers.errorMessage(ctx, `You have not researched MarketTA.I for division: ${divisionName}`); throw helpers.errorMessage(ctx, `You have not researched MarketTA.I for division: ${divisionName}`);
SetMaterialMarketTA1(getMaterial(divisionName, cityName, materialName), on); setMaterialMarketTA1(getMaterial(divisionName, cityName, materialName), on);
}, },
setMaterialMarketTA2: (ctx) => (_divisionName, _cityName, _materialName, _on) => { setMaterialMarketTA2: (ctx) => (_divisionName, _cityName, _materialName, _on) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -428,7 +428,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const on = !!_on; const on = !!_on;
if (!getDivision(divisionName).hasResearch("Market-TA.II")) if (!getDivision(divisionName).hasResearch("Market-TA.II"))
throw helpers.errorMessage(ctx, `You have not researched MarketTA.II for division: ${divisionName}`); throw helpers.errorMessage(ctx, `You have not researched MarketTA.II for division: ${divisionName}`);
SetMaterialMarketTA2(getMaterial(divisionName, cityName, materialName), on); setMaterialMarketTA2(getMaterial(divisionName, cityName, materialName), on);
}, },
setProductMarketTA1: (ctx) => (_divisionName, _productName, _on) => { setProductMarketTA1: (ctx) => (_divisionName, _productName, _on) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -437,7 +437,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const on = !!_on; const on = !!_on;
if (!getDivision(divisionName).hasResearch("Market-TA.I")) if (!getDivision(divisionName).hasResearch("Market-TA.I"))
throw helpers.errorMessage(ctx, `You have not researched MarketTA.I for division: ${divisionName}`); throw helpers.errorMessage(ctx, `You have not researched MarketTA.I for division: ${divisionName}`);
SetProductMarketTA1(getProduct(divisionName, productName), on); setProductMarketTA1(getProduct(divisionName, productName), on);
}, },
setProductMarketTA2: (ctx) => (_divisionName, _productName, _on) => { setProductMarketTA2: (ctx) => (_divisionName, _productName, _on) => {
checkAccess(ctx, CorpUnlockName.WarehouseAPI); checkAccess(ctx, CorpUnlockName.WarehouseAPI);
@ -446,7 +446,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const on = !!_on; const on = !!_on;
if (!getDivision(divisionName).hasResearch("Market-TA.II")) if (!getDivision(divisionName).hasResearch("Market-TA.II"))
throw helpers.errorMessage(ctx, `You have not researched MarketTA.II for division: ${divisionName}`); throw helpers.errorMessage(ctx, `You have not researched MarketTA.II for division: ${divisionName}`);
SetProductMarketTA2(getProduct(divisionName, productName), on); setProductMarketTA2(getProduct(divisionName, productName), on);
}, },
}; };
@ -526,7 +526,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const office = getOffice(divisionName, cityName); const office = getOffice(divisionName, cityName);
const corporation = getCorporation(); const corporation = getCorporation();
UpgradeOfficeSize(corporation, office, size); upgradeOfficeSize(corporation, office, size);
}, },
throwParty: (ctx) => (_divisionName, _cityName, _costPerEmployee) => { throwParty: (ctx) => (_divisionName, _cityName, _costPerEmployee) => {
checkAccess(ctx, CorpUnlockName.OfficeAPI); checkAccess(ctx, CorpUnlockName.OfficeAPI);
@ -540,7 +540,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const corporation = getCorporation(); const corporation = getCorporation();
const office = getOffice(divisionName, cityName); const office = getOffice(divisionName, cityName);
return ThrowParty(corporation, office, costPerEmployee); return throwParty(corporation, office, costPerEmployee);
}, },
buyTea: (ctx) => (_divisionName, _cityName) => { buyTea: (ctx) => (_divisionName, _cityName) => {
checkAccess(ctx, CorpUnlockName.OfficeAPI); checkAccess(ctx, CorpUnlockName.OfficeAPI);
@ -549,19 +549,19 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const corporation = getCorporation(); const corporation = getCorporation();
const office = getOffice(divisionName, cityName); const office = getOffice(divisionName, cityName);
return BuyTea(corporation, office); return buyTea(corporation, office);
}, },
hireAdVert: (ctx) => (_divisionName) => { hireAdVert: (ctx) => (_divisionName) => {
checkAccess(ctx, CorpUnlockName.OfficeAPI); checkAccess(ctx, CorpUnlockName.OfficeAPI);
const divisionName = helpers.string(ctx, "divisionName", _divisionName); const divisionName = helpers.string(ctx, "divisionName", _divisionName);
const corporation = getCorporation(); const corporation = getCorporation();
HireAdVert(corporation, getDivision(divisionName)); hireAdVert(corporation, getDivision(divisionName));
}, },
research: (ctx) => (_divisionName, _researchName) => { research: (ctx) => (_divisionName, _researchName) => {
checkAccess(ctx, CorpUnlockName.OfficeAPI); checkAccess(ctx, CorpUnlockName.OfficeAPI);
const divisionName = helpers.string(ctx, "divisionName", _divisionName); const divisionName = helpers.string(ctx, "divisionName", _divisionName);
const researchName = getEnumHelper("CorpResearchName").nsGetMember(ctx, _researchName, "researchName"); const researchName = getEnumHelper("CorpResearchName").nsGetMember(ctx, _researchName, "researchName");
Research(getDivision(divisionName), researchName); research(getDivision(divisionName), researchName);
}, },
getOffice: (ctx) => (_divisionName, _cityName) => { getOffice: (ctx) => (_divisionName, _cityName) => {
checkAccess(ctx, CorpUnlockName.OfficeAPI); checkAccess(ctx, CorpUnlockName.OfficeAPI);
@ -611,7 +611,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const industryName = getEnumHelper("IndustryType").nsGetMember(ctx, _industryName, "industryName"); const industryName = getEnumHelper("IndustryType").nsGetMember(ctx, _industryName, "industryName");
const divisionName = helpers.string(ctx, "divisionName", _divisionName); const divisionName = helpers.string(ctx, "divisionName", _divisionName);
const corporation = getCorporation(); const corporation = getCorporation();
NewDivision(corporation, industryName, divisionName); createDivision(corporation, industryName, divisionName);
}, },
expandCity: (ctx) => (_divisionName, _cityName) => { expandCity: (ctx) => (_divisionName, _cityName) => {
checkAccess(ctx); checkAccess(ctx);
@ -643,7 +643,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
throw new Error(`Invalid value for rate field! Must be numeric, greater than 0, and less than ${max}`); throw new Error(`Invalid value for rate field! Must be numeric, greater than 0, and less than ${max}`);
const corporation = getCorporation(); const corporation = getCorporation();
if (!corporation.public) throw helpers.errorMessage(ctx, `Your company has not gone public!`); if (!corporation.public) throw helpers.errorMessage(ctx, `Your company has not gone public!`);
IssueDividends(corporation, rate); issueDividends(corporation, rate);
}, },
issueNewShares: (ctx) => (_amount) => { issueNewShares: (ctx) => (_amount) => {
checkAccess(ctx); checkAccess(ctx);
@ -651,7 +651,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const maxNewShares = corporation.calculateMaxNewShares(); const maxNewShares = corporation.calculateMaxNewShares();
if (_amount == undefined) _amount = maxNewShares; if (_amount == undefined) _amount = maxNewShares;
const amount = helpers.number(ctx, "amount", _amount); const amount = helpers.number(ctx, "amount", _amount);
const [funds] = IssueNewShares(corporation, amount); const [funds] = issueNewShares(corporation, amount);
return funds; return funds;
}, },
getDivision: (ctx) => (_divisionName) => { getDivision: (ctx) => (_divisionName) => {
@ -728,7 +728,7 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
checkAccess(ctx); checkAccess(ctx);
const corporation = getCorporation(); const corporation = getCorporation();
try { try {
AcceptInvestmentOffer(corporation); acceptInvestmentOffer(corporation);
return true; return true;
} catch (err) { } catch (err) {
return false; return false;
@ -739,18 +739,18 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
const corporation = getCorporation(); const corporation = getCorporation();
if (corporation.public) throw helpers.errorMessage(ctx, "Corporation is already public"); if (corporation.public) throw helpers.errorMessage(ctx, "Corporation is already public");
const numShares = helpers.number(ctx, "numShares", _numShares); const numShares = helpers.number(ctx, "numShares", _numShares);
GoPublic(corporation, numShares); goPublic(corporation, numShares);
return true; return true;
}, },
sellShares: (ctx) => (_numShares) => { sellShares: (ctx) => (_numShares) => {
checkAccess(ctx); checkAccess(ctx);
const numShares = helpers.number(ctx, "numShares", _numShares); const numShares = helpers.number(ctx, "numShares", _numShares);
return SellShares(getCorporation(), numShares); return sellShares(getCorporation(), numShares);
}, },
buyBackShares: (ctx) => (_numShares) => { buyBackShares: (ctx) => (_numShares) => {
checkAccess(ctx); checkAccess(ctx);
const numShares = helpers.number(ctx, "numShares", _numShares); const numShares = helpers.number(ctx, "numShares", _numShares);
return BuyBackShares(getCorporation(), numShares); return buyBackShares(getCorporation(), numShares);
}, },
bribe: (ctx) => (_factionName, _amountCash) => { bribe: (ctx) => (_factionName, _amountCash) => {
checkAccess(ctx); checkAccess(ctx);

@ -36,7 +36,7 @@ import { v2APIBreak } from "./utils/v2APIBreak";
import { Corporation } from "./Corporation/Corporation"; import { Corporation } from "./Corporation/Corporation";
import { Terminal } from "./Terminal"; import { Terminal } from "./Terminal";
import { getRecordValues } from "./Types/Record"; import { getRecordValues } from "./Types/Record";
import { ExportMaterial } from "./Corporation/Actions"; import { exportMaterial } from "./Corporation/Actions";
import { getGoSave, loadGo } from "./Go/SaveLoad"; import { getGoSave, loadGo } from "./Go/SaveLoad";
import { SaveData } from "./types"; import { SaveData } from "./types";
import { SaveDataError, canUseBinaryFormat, decodeSaveData, encodeJsonSaveString } from "./utils/SaveDataUtils"; import { SaveDataError, canUseBinaryFormat, decodeSaveData, encodeJsonSaveString } from "./utils/SaveDataUtils";
@ -692,7 +692,7 @@ function evaluateVersionCompatibility(ver: string | number): void {
const targetDivision = Player.corporation.divisions.get(originalExport.division); const targetDivision = Player.corporation.divisions.get(originalExport.division);
if (!targetDivision) throw new Error(`Target division ${originalExport.division} did not exist`); if (!targetDivision) throw new Error(`Target division ${originalExport.division} did not exist`);
// Set the export again. ExportMaterial throws on failure // Set the export again. ExportMaterial throws on failure
ExportMaterial(targetDivision, originalExport.city, material, originalExport.amount); exportMaterial(targetDivision, originalExport.city, material, originalExport.amount);
} catch (e) { } catch (e) {
anyExportsFailed = true; anyExportsFailed = true;
// We just need the text error, not a full stack trace // We just need the text error, not a full stack trace

@ -9,11 +9,11 @@ import {
import { Player, setPlayer } from "../../src/Player"; import { Player, setPlayer } from "../../src/Player";
import { PlayerObject } from "../../src/PersonObjects/Player/PlayerObject"; import { PlayerObject } from "../../src/PersonObjects/Player/PlayerObject";
import { import {
AcceptInvestmentOffer, acceptInvestmentOffer,
BuyBackShares, buyBackShares,
GoPublic, goPublic,
IssueNewShares, issueNewShares,
SellShares, sellShares,
} from "../../src/Corporation/Actions"; } from "../../src/Corporation/Actions";
describe("Corporation", () => { describe("Corporation", () => {
@ -87,32 +87,32 @@ describe("Corporation", () => {
expectSharesToAddUp(Player.corporation!); expectSharesToAddUp(Player.corporation!);
}); });
it("should be preserved by acceptInvestmentOffer", () => { it("should be preserved by acceptInvestmentOffer", () => {
AcceptInvestmentOffer(corporation); acceptInvestmentOffer(corporation);
expectSharesToAddUp(corporation); expectSharesToAddUp(corporation);
}); });
it("should be preserved by goPublic", () => { it("should be preserved by goPublic", () => {
const numShares = 1e8; const numShares = 1e8;
GoPublic(corporation, numShares); goPublic(corporation, numShares);
expectSharesToAddUp(corporation); expectSharesToAddUp(corporation);
}); });
it("should be preserved by IssueNewShares", () => { it("should be preserved by IssueNewShares", () => {
const numShares = 1e8; const numShares = 1e8;
GoPublic(corporation, numShares); goPublic(corporation, numShares);
corporation.issueNewSharesCooldown = 0; corporation.issueNewSharesCooldown = 0;
IssueNewShares(corporation, numShares); issueNewShares(corporation, numShares);
expectSharesToAddUp(corporation); expectSharesToAddUp(corporation);
}); });
it("should be preserved by BuyBackShares", () => { it("should be preserved by BuyBackShares", () => {
const numShares = 1e8; const numShares = 1e8;
GoPublic(corporation, numShares); goPublic(corporation, numShares);
BuyBackShares(corporation, numShares); buyBackShares(corporation, numShares);
expectSharesToAddUp(corporation); expectSharesToAddUp(corporation);
}); });
it("should be preserved by SellShares", () => { it("should be preserved by SellShares", () => {
const numShares = 1e8; const numShares = 1e8;
GoPublic(corporation, numShares); goPublic(corporation, numShares);
corporation.shareSaleCooldown = 0; corporation.shareSaleCooldown = 0;
SellShares(corporation, numShares); sellShares(corporation, numShares);
expectSharesToAddUp(corporation); expectSharesToAddUp(corporation);
}); });
}); });