mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-22 23:53:48 +01:00
Merge pull request #2986 from phyzical/phyzical/Corp-Api-Updates
Missing corp api functions
This commit is contained in:
commit
4b4b3f03da
18
dist/bitburner.d.ts
vendored
18
dist/bitburner.d.ts
vendored
@ -958,6 +958,16 @@ export declare interface Corporation extends WarehouseAPI, OfficeAPI {
|
|||||||
* @param percent - Percent of profit to issue as dividends.
|
* @param percent - Percent of profit to issue as dividends.
|
||||||
*/
|
*/
|
||||||
issueDividends(percent: number): void;
|
issueDividends(percent: number): void;
|
||||||
|
/**
|
||||||
|
* Buyback Shares
|
||||||
|
* @param amt - Number of shares to attempt to buyback.
|
||||||
|
*/
|
||||||
|
buyBackShares(amt: number): void;
|
||||||
|
/**
|
||||||
|
* Sell Shares
|
||||||
|
* @param amt - Number of shares to attempt to sell.
|
||||||
|
*/
|
||||||
|
sellShares(amt: number): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -6635,6 +6645,14 @@ export declare interface WarehouseAPI {
|
|||||||
* @param amt - Amount of material to buy
|
* @param amt - Amount of material to buy
|
||||||
*/
|
*/
|
||||||
buyMaterial(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
buyMaterial(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
||||||
|
/**
|
||||||
|
* Set material to bulk buy
|
||||||
|
* @param divisionName - Name of the division
|
||||||
|
* @param cityName - Name of the city
|
||||||
|
* @param materialName - Name of the material
|
||||||
|
* @param amt - Amount of material to buy
|
||||||
|
*/
|
||||||
|
bulkPurchase(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
||||||
/**
|
/**
|
||||||
* Get warehouse data
|
* Get warehouse data
|
||||||
* @param divisionName - Name of the division
|
* @param divisionName - Name of the division
|
||||||
|
24
markdown/bitburner.corporation.buybackshares.md
Normal file
24
markdown/bitburner.corporation.buybackshares.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [buyBackShares](./bitburner.corporation.buybackshares.md)
|
||||||
|
|
||||||
|
## Corporation.buyBackShares() method
|
||||||
|
|
||||||
|
Buyback Shares
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
buyBackShares(amount: number): void;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| amount | number | Amount of shares to buy back. |
|
||||||
|
|
||||||
|
<b>Returns:</b>
|
||||||
|
|
||||||
|
void
|
||||||
|
|
@ -19,6 +19,7 @@ export interface Corporation extends WarehouseAPI, OfficeAPI
|
|||||||
| --- | --- |
|
| --- | --- |
|
||||||
| [acceptInvestmentOffer()](./bitburner.corporation.acceptinvestmentoffer.md) | Accept investment based on you companies current valuation |
|
| [acceptInvestmentOffer()](./bitburner.corporation.acceptinvestmentoffer.md) | Accept investment based on you companies current valuation |
|
||||||
| [bribe(factionName, amountCash, amountShares)](./bitburner.corporation.bribe.md) | Bribe a faction |
|
| [bribe(factionName, amountCash, amountShares)](./bitburner.corporation.bribe.md) | Bribe a faction |
|
||||||
|
| [buyBackShares(amount)](./bitburner.corporation.buybackshares.md) | Buyback Shares |
|
||||||
| [createCorporation(corporationName, selfFund)](./bitburner.corporation.createcorporation.md) | Create a Corporation |
|
| [createCorporation(corporationName, selfFund)](./bitburner.corporation.createcorporation.md) | Create a Corporation |
|
||||||
| [expandCity(divisionName, cityName)](./bitburner.corporation.expandcity.md) | Expand to a new city |
|
| [expandCity(divisionName, cityName)](./bitburner.corporation.expandcity.md) | Expand to a new city |
|
||||||
| [expandIndustry(industryType, divisionName)](./bitburner.corporation.expandindustry.md) | Expand to a new industry |
|
| [expandIndustry(industryType, divisionName)](./bitburner.corporation.expandindustry.md) | Expand to a new industry |
|
||||||
@ -34,5 +35,6 @@ export interface Corporation extends WarehouseAPI, OfficeAPI
|
|||||||
| [hasUnlockUpgrade(upgradeName)](./bitburner.corporation.hasunlockupgrade.md) | Check if you have a one time unlockable upgrade |
|
| [hasUnlockUpgrade(upgradeName)](./bitburner.corporation.hasunlockupgrade.md) | Check if you have a one time unlockable upgrade |
|
||||||
| [issueDividends(percent)](./bitburner.corporation.issuedividends.md) | Issue dividends |
|
| [issueDividends(percent)](./bitburner.corporation.issuedividends.md) | Issue dividends |
|
||||||
| [levelUpgrade(upgradeName)](./bitburner.corporation.levelupgrade.md) | Level an upgrade. |
|
| [levelUpgrade(upgradeName)](./bitburner.corporation.levelupgrade.md) | Level an upgrade. |
|
||||||
|
| [sellShares(amount)](./bitburner.corporation.sellshares.md) | Sell Shares |
|
||||||
| [unlockUpgrade(upgradeName)](./bitburner.corporation.unlockupgrade.md) | Unlock an upgrade |
|
| [unlockUpgrade(upgradeName)](./bitburner.corporation.unlockupgrade.md) | Unlock an upgrade |
|
||||||
|
|
||||||
|
24
markdown/bitburner.corporation.sellshares.md
Normal file
24
markdown/bitburner.corporation.sellshares.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [sellShares](./bitburner.corporation.sellshares.md)
|
||||||
|
|
||||||
|
## Corporation.sellShares() method
|
||||||
|
|
||||||
|
Sell Shares
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
sellShares(amount: number): void;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| amount | number | Amount of shares to sell. |
|
||||||
|
|
||||||
|
<b>Returns:</b>
|
||||||
|
|
||||||
|
void
|
||||||
|
|
27
markdown/bitburner.warehouseapi.bulkpurchase.md
Normal file
27
markdown/bitburner.warehouseapi.bulkpurchase.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||||
|
|
||||||
|
[Home](./index.md) > [bitburner](./bitburner.md) > [WarehouseAPI](./bitburner.warehouseapi.md) > [bulkPurchase](./bitburner.warehouseapi.bulkpurchase.md)
|
||||||
|
|
||||||
|
## WarehouseAPI.bulkPurchase() method
|
||||||
|
|
||||||
|
Set material to bulk buy
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
bulkPurchase(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| divisionName | string | Name of the division |
|
||||||
|
| cityName | string | Name of the city |
|
||||||
|
| materialName | string | Name of the material |
|
||||||
|
| amt | number | Amount of material to buy |
|
||||||
|
|
||||||
|
<b>Returns:</b>
|
||||||
|
|
||||||
|
void
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
|
import { IPlayer } from 'src/PersonObjects/IPlayer';
|
||||||
|
import { MaterialSizes } from './MaterialSizes';
|
||||||
import { ICorporation } from "./ICorporation";
|
import { ICorporation } from "./ICorporation";
|
||||||
import { IIndustry } from "./IIndustry";
|
import { IIndustry } from "./IIndustry";
|
||||||
import { IndustryStartingCosts, IndustryResearchTrees } from "./IndustryData";
|
import { IndustryStartingCosts, IndustryResearchTrees } from "./IndustryData";
|
||||||
@ -245,6 +247,57 @@ export function BuyMaterial(material: Material, amt: number): void {
|
|||||||
material.buy = amt;
|
material.buy = amt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function BulkPurchase(corp: ICorporation, warehouse: Warehouse, material: Material, amt: number): void {
|
||||||
|
const matSize = MaterialSizes[material.name];
|
||||||
|
const maxAmount = (warehouse.size - warehouse.sizeUsed) / matSize;
|
||||||
|
if (isNaN(amt) || amt < 0) {
|
||||||
|
throw new Error(`Invalid input amount`);
|
||||||
|
}
|
||||||
|
if (amt * matSize > maxAmount) {
|
||||||
|
throw new Error(`You do not have enough warehouse size to fit this purchase`);
|
||||||
|
}
|
||||||
|
const cost = amt * material.bCost;
|
||||||
|
if (corp.funds >= cost) {
|
||||||
|
corp.funds = corp.funds - cost;
|
||||||
|
material.qty += amt;
|
||||||
|
} else {
|
||||||
|
throw new Error(`You cannot afford this purchase.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function SellShares(corporation: ICorporation, player: IPlayer, numShares: number): number {
|
||||||
|
if (isNaN(numShares)) throw new Error("Invalid value for number of shares");
|
||||||
|
if (numShares < 0) throw new Error("Invalid value for number of shares");
|
||||||
|
if (numShares > corporation.numShares) throw new Error("You don't have that many shares to sell!");
|
||||||
|
if (!corporation.public) throw new Error("You haven't gone public!");
|
||||||
|
if (corporation.shareSaleCooldown) throw new Error("Share sale on cooldown!");
|
||||||
|
const stockSaleResults = corporation.calculateShareSale(numShares);
|
||||||
|
const profit = stockSaleResults[0];
|
||||||
|
const newSharePrice = stockSaleResults[1];
|
||||||
|
const newSharesUntilUpdate = stockSaleResults[2];
|
||||||
|
|
||||||
|
corporation.numShares -= numShares;
|
||||||
|
corporation.issuedShares += numShares;
|
||||||
|
corporation.sharePrice = newSharePrice;
|
||||||
|
corporation.shareSalesUntilPriceUpdate = newSharesUntilUpdate;
|
||||||
|
corporation.shareSaleCooldown = CorporationConstants.SellSharesCooldown;
|
||||||
|
player.gainMoney(profit, "corporation");
|
||||||
|
return profit;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function BuyBackShares(corporation: ICorporation, player: IPlayer, numShares: number): boolean {
|
||||||
|
if (isNaN(numShares)) throw new Error("Invalid value for number of shares");
|
||||||
|
if (numShares < 0) throw new Error("Invalid value for number of shares");
|
||||||
|
if (numShares > corporation.issuedShares) throw new Error("You don't have that many shares to buy!");
|
||||||
|
if (!corporation.public) throw new Error("You haven't gone public!");
|
||||||
|
const buybackPrice = corporation.sharePrice * 1.1;
|
||||||
|
if (corporation.funds < (numShares * buybackPrice)) throw new Error("You cant afford that many shares!");
|
||||||
|
corporation.numShares += numShares;
|
||||||
|
corporation.issuedShares -= numShares;
|
||||||
|
player.loseMoney(numShares * buybackPrice, "corporation");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
export function AssignJob(employee: Employee, job: string): void {
|
export function AssignJob(employee: Employee, job: string): void {
|
||||||
if (!Object.values(EmployeePositions).includes(job)) throw new Error(`'${job}' is not a valid job.`);
|
if (!Object.values(EmployeePositions).includes(job)) throw new Error(`'${job}' is not a valid job.`);
|
||||||
employee.pos = job;
|
employee.pos = job;
|
||||||
@ -335,6 +388,9 @@ export function MakeProduct(
|
|||||||
if (productName == null || productName === "") {
|
if (productName == null || productName === "") {
|
||||||
throw new Error("You must specify a name for your product!");
|
throw new Error("You must specify a name for your product!");
|
||||||
}
|
}
|
||||||
|
if (!division.makesProducts) {
|
||||||
|
throw new Error("You cannot create products for this industry!");
|
||||||
|
}
|
||||||
if (isNaN(designInvest)) {
|
if (isNaN(designInvest)) {
|
||||||
throw new Error("Invalid value for design investment");
|
throw new Error("Invalid value for design investment");
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@ import { useCorporation } from "./Context";
|
|||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
|
import { BuyBackShares } from '../Actions';
|
||||||
|
import { dialogBoxCreate } from '../../ui/React/DialogBox';
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -36,20 +38,12 @@ export function BuybackSharesModal(props: IProps): React.ReactElement {
|
|||||||
|
|
||||||
function buy(): void {
|
function buy(): void {
|
||||||
if (disabled) return;
|
if (disabled) return;
|
||||||
if (shares === null) return;
|
try {
|
||||||
corp.numShares += shares;
|
BuyBackShares(corp, player, shares)
|
||||||
if (isNaN(corp.issuedShares)) {
|
}
|
||||||
console.warn("Corporation issuedShares is NaN: " + corp.issuedShares);
|
catch (err) {
|
||||||
console.warn("Converting to number now");
|
dialogBoxCreate(err + "");
|
||||||
const res = corp.issuedShares;
|
|
||||||
if (isNaN(res)) {
|
|
||||||
corp.issuedShares = 0;
|
|
||||||
} else {
|
|
||||||
corp.issuedShares = res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
corp.issuedShares -= shares;
|
|
||||||
player.loseMoney(shares * buybackPrice, "corporation");
|
|
||||||
props.onClose();
|
props.onClose();
|
||||||
props.rerender();
|
props.rerender();
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import { MaterialSizes } from "../MaterialSizes";
|
|||||||
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";
|
||||||
import { BuyMaterial } from "../Actions";
|
import { BulkPurchase, BuyMaterial } from "../Actions";
|
||||||
import { Modal } from "../../ui/React/Modal";
|
import { Modal } from "../../ui/React/Modal";
|
||||||
import { useCorporation, useDivision } from "./Context";
|
import { useCorporation, useDivision } from "./Context";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
@ -54,33 +54,17 @@ interface IBPProps {
|
|||||||
warehouse: Warehouse;
|
warehouse: Warehouse;
|
||||||
}
|
}
|
||||||
|
|
||||||
function BulkPurchase(props: IBPProps): React.ReactElement {
|
function BulkPurchaseSection(props: IBPProps): React.ReactElement {
|
||||||
const corp = useCorporation();
|
const corp = useCorporation();
|
||||||
const [buyAmt, setBuyAmt] = useState("");
|
const [buyAmt, setBuyAmt] = useState("");
|
||||||
|
|
||||||
function bulkPurchase(): void {
|
function bulkPurchase(): void {
|
||||||
const amount = parseFloat(buyAmt);
|
try {
|
||||||
|
BulkPurchase(corp, props.warehouse, props.mat, parseFloat(buyAmt));
|
||||||
const matSize = MaterialSizes[props.mat.name];
|
} catch (err) {
|
||||||
const maxAmount = (props.warehouse.size - props.warehouse.sizeUsed) / matSize;
|
dialogBoxCreate(err + "");
|
||||||
if (amount * matSize > maxAmount) {
|
|
||||||
dialogBoxCreate(`You do not have enough warehouse size to fit this purchase`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isNaN(amount) || amount < 0) {
|
|
||||||
dialogBoxCreate("Invalid input amount");
|
|
||||||
} else {
|
|
||||||
const cost = amount * props.mat.bCost;
|
|
||||||
if (corp.funds >= cost) {
|
|
||||||
corp.funds = corp.funds - cost;
|
|
||||||
props.mat.qty += amount;
|
|
||||||
} else {
|
|
||||||
dialogBoxCreate(`You cannot afford this purchase.`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
props.onClose();
|
|
||||||
}
|
}
|
||||||
|
props.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {
|
function onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {
|
||||||
@ -164,7 +148,7 @@ export function PurchaseMaterialModal(props: IProps): React.ReactElement {
|
|||||||
<Button onClick={purchaseMaterial}>Confirm</Button>
|
<Button onClick={purchaseMaterial}>Confirm</Button>
|
||||||
<Button onClick={clearPurchase}>Clear Purchase</Button>
|
<Button onClick={clearPurchase}>Clear Purchase</Button>
|
||||||
{division.hasResearch("Bulk Purchasing") && (
|
{division.hasResearch("Bulk Purchasing") && (
|
||||||
<BulkPurchase onClose={props.onClose} mat={props.mat} warehouse={props.warehouse} />
|
<BulkPurchaseSection onClose={props.onClose} mat={props.mat} warehouse={props.warehouse} />
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -4,12 +4,12 @@ import { dialogBoxCreate } from "../../ui/React/DialogBox";
|
|||||||
import { Modal } from "../../ui/React/Modal";
|
import { Modal } from "../../ui/React/Modal";
|
||||||
import { use } from "../../ui/Context";
|
import { use } from "../../ui/Context";
|
||||||
import { useCorporation } from "./Context";
|
import { useCorporation } from "./Context";
|
||||||
import { CorporationConstants } from "../data/Constants";
|
|
||||||
import { ICorporation } from "../ICorporation";
|
import { ICorporation } from "../ICorporation";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import { Money } from "../../ui/React/Money";
|
import { Money } from "../../ui/React/Money";
|
||||||
|
import { SellShares } from "../Actions";
|
||||||
interface IProps {
|
interface IProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
@ -48,38 +48,23 @@ export function SellSharesModal(props: IProps): React.ReactElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function sell(): void {
|
function sell(): void {
|
||||||
if (shares === null) return;
|
|
||||||
if (disabled) return;
|
if (disabled) return;
|
||||||
const stockSaleResults = corp.calculateShareSale(shares);
|
try {
|
||||||
const profit = stockSaleResults[0];
|
const profit = SellShares(corp, player, shares)
|
||||||
const newSharePrice = stockSaleResults[1];
|
props.onClose();
|
||||||
const newSharesUntilUpdate = stockSaleResults[2];
|
dialogBoxCreate(
|
||||||
|
<>
|
||||||
|
Sold {numeralWrapper.formatMoney(shares)} shares for
|
||||||
|
<Money money={profit} />. The corporation's stock price fell to <Money money={corp.sharePrice} />
|
||||||
|
as a result of dilution.
|
||||||
|
</>,
|
||||||
|
);
|
||||||
|
|
||||||
corp.numShares -= shares;
|
props.rerender();
|
||||||
if (isNaN(corp.issuedShares)) {
|
} catch (err) {
|
||||||
console.error(`Corporation issuedShares is NaN: ${corp.issuedShares}`);
|
dialogBoxCreate(err + "");
|
||||||
const res = corp.issuedShares;
|
|
||||||
if (isNaN(res)) {
|
|
||||||
corp.issuedShares = 0;
|
|
||||||
} else {
|
|
||||||
corp.issuedShares = res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
corp.issuedShares += shares;
|
|
||||||
corp.sharePrice = newSharePrice;
|
|
||||||
corp.shareSalesUntilPriceUpdate = newSharesUntilUpdate;
|
|
||||||
corp.shareSaleCooldown = CorporationConstants.SellSharesCooldown;
|
|
||||||
player.gainMoney(profit, "corporation");
|
|
||||||
props.onClose();
|
|
||||||
dialogBoxCreate(
|
|
||||||
<>
|
|
||||||
Sold {numeralWrapper.formatMoney(shares)} shares for
|
|
||||||
<Money money={profit} />. The corporation's stock price fell to <Money money={corp.sharePrice} />
|
|
||||||
as a result of dilution.
|
|
||||||
</>,
|
|
||||||
);
|
|
||||||
|
|
||||||
props.rerender();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {
|
function onKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {
|
||||||
|
@ -49,6 +49,9 @@ import {
|
|||||||
SetMaterialMarketTA2,
|
SetMaterialMarketTA2,
|
||||||
SetProductMarketTA1,
|
SetProductMarketTA1,
|
||||||
SetProductMarketTA2,
|
SetProductMarketTA2,
|
||||||
|
BulkPurchase,
|
||||||
|
SellShares,
|
||||||
|
BuyBackShares,
|
||||||
SetSmartSupplyUseLeftovers,
|
SetSmartSupplyUseLeftovers,
|
||||||
} from "../Corporation/Actions";
|
} from "../Corporation/Actions";
|
||||||
import { CorporationUnlockUpgrades } from "../Corporation/data/CorporationUnlockUpgrades";
|
import { CorporationUnlockUpgrades } from "../Corporation/data/CorporationUnlockUpgrades";
|
||||||
@ -178,6 +181,7 @@ export function NetscriptCorporation(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function getResearchCost(division: IIndustry, researchName: string): number {
|
function getResearchCost(division: IIndustry, researchName: string): number {
|
||||||
const researchTree = IndustryResearchTrees[division.type];
|
const researchTree = IndustryResearchTrees[division.type];
|
||||||
if (researchTree === undefined) throw new Error(`No research tree for industry '${division.type}'`);
|
if (researchTree === undefined) throw new Error(`No research tree for industry '${division.type}'`);
|
||||||
@ -436,6 +440,18 @@ export function NetscriptCorporation(
|
|||||||
const material = getMaterial(divisionName, cityName, materialName);
|
const material = getMaterial(divisionName, cityName, materialName);
|
||||||
BuyMaterial(material, amt);
|
BuyMaterial(material, amt);
|
||||||
},
|
},
|
||||||
|
bulkPurchase: function (adivisionName: any, acityName: any, amaterialName: any, aamt: any): void {
|
||||||
|
checkAccess("bulkPurchase", 7);
|
||||||
|
const divisionName = helper.string("bulkPurchase", "divisionName", adivisionName);
|
||||||
|
if (!hasResearched(getDivision(adivisionName), "Bulk Purchasing")) throw new Error(`You have not researched Bulk Purchasing in ${divisionName}`)
|
||||||
|
const corporation = getCorporation();
|
||||||
|
const cityName = helper.string("bulkPurchase", "cityName", acityName);
|
||||||
|
const materialName = helper.string("bulkPurchase", "materialName", amaterialName);
|
||||||
|
const amt = helper.number("bulkPurchase", "amt", aamt);
|
||||||
|
const warehouse = getWarehouse(divisionName, cityName)
|
||||||
|
const material = getMaterial(divisionName, cityName, materialName);
|
||||||
|
BulkPurchase(corporation, warehouse, material, amt);
|
||||||
|
},
|
||||||
makeProduct: function (
|
makeProduct: function (
|
||||||
adivisionName: any,
|
adivisionName: any,
|
||||||
acityName: any,
|
acityName: any,
|
||||||
@ -813,6 +829,16 @@ export function NetscriptCorporation(
|
|||||||
const numShares = helper.number("goPublic", "numShares", anumShares);
|
const numShares = helper.number("goPublic", "numShares", anumShares);
|
||||||
return goPublic(numShares);
|
return goPublic(numShares);
|
||||||
},
|
},
|
||||||
|
sellShares: function (anumShares: any): number {
|
||||||
|
checkAccess("acceptInvestmentOffer");
|
||||||
|
const numShares = helper.number("sellStock", "numShares", anumShares);
|
||||||
|
return SellShares(getCorporation(), player, numShares);
|
||||||
|
},
|
||||||
|
buyBackShares: function (anumShares: any): boolean {
|
||||||
|
checkAccess("acceptInvestmentOffer");
|
||||||
|
const numShares = helper.number("buyStock", "numShares", anumShares);
|
||||||
|
return BuyBackShares(getCorporation(), player, numShares);
|
||||||
|
},
|
||||||
bribe: function (afactionName: string, aamountCash: any, aamountShares: any): boolean {
|
bribe: function (afactionName: string, aamountCash: any, aamountShares: any): boolean {
|
||||||
checkAccess("bribe");
|
checkAccess("bribe");
|
||||||
const factionName = helper.string("bribe", "factionName", afactionName);
|
const factionName = helper.string("bribe", "factionName", afactionName);
|
||||||
|
20
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
20
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -6382,6 +6382,14 @@ export interface WarehouseAPI {
|
|||||||
* @param amt - Amount of material to buy
|
* @param amt - Amount of material to buy
|
||||||
*/
|
*/
|
||||||
buyMaterial(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
buyMaterial(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
||||||
|
/**
|
||||||
|
* Set material to bulk buy
|
||||||
|
* @param divisionName - Name of the division
|
||||||
|
* @param cityName - Name of the city
|
||||||
|
* @param materialName - Name of the material
|
||||||
|
* @param amt - Amount of material to buy
|
||||||
|
*/
|
||||||
|
bulkPurchase(divisionName: string, cityName: string, materialName: string, amt: number): void;
|
||||||
/**
|
/**
|
||||||
* Get warehouse data
|
* Get warehouse data
|
||||||
* @param divisionName - Name of the division
|
* @param divisionName - Name of the division
|
||||||
@ -6622,6 +6630,18 @@ export interface Corporation extends WarehouseAPI, OfficeAPI {
|
|||||||
* @param percent - Percent of profit to issue as dividends.
|
* @param percent - Percent of profit to issue as dividends.
|
||||||
*/
|
*/
|
||||||
issueDividends(percent: number): void;
|
issueDividends(percent: number): void;
|
||||||
|
/**
|
||||||
|
* Buyback Shares
|
||||||
|
* @param amount - Amount of shares to buy back.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
buyBackShares(amount: number): void;
|
||||||
|
/**
|
||||||
|
* Sell Shares
|
||||||
|
* @param amount - Amount of shares to sell.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
sellShares(amount: number): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user