NETSCRIPT: Added ns.corporation.issueNewShares function (#261)

This commit is contained in:
Mughur
2022-12-25 10:35:18 +02:00
committed by GitHub
parent 556fe8dd33
commit 5c80655d62
6 changed files with 60 additions and 26 deletions
+16
View File
@@ -24,6 +24,7 @@ import {
UnlockUpgrade,
LevelUpgrade,
IssueDividends,
IssueNewShares,
SellMaterial,
SellProduct,
SetSmartSupply,
@@ -820,6 +821,21 @@ export function NetscriptCorporation(): InternalAPI<NSCorporation> {
if (!corporation.public) throw helpers.makeRuntimeErrorMsg(ctx, `Your company has not gone public!`);
IssueDividends(corporation, rate);
},
issueNewShares: (ctx) => (_amount) => {
checkAccess(ctx);
const corporation = getCorporation();
const maxNewShares = corporation.calculateMaxNewShares();
if (_amount == undefined) _amount = maxNewShares;
const amount = helpers.number(ctx, "amount", _amount);
if (corporation.issueNewSharesCooldown > 0) throw new Error(`Can't issue new shares, action on cooldown.`);
if (amount < 10e6 || amount > maxNewShares)
throw new Error(
`Invalid value for amount field! Must be numeric, greater than 10m, and less than ${maxNewShares} (20% of total shares)`,
);
if (!corporation.public) throw helpers.makeRuntimeErrorMsg(ctx, `Your company has not gone public!`);
const [funds] = IssueNewShares(corporation, amount);
return funds;
},
getDivision: (ctx) => (_divisionName) => {
checkAccess(ctx);
const divisionName = helpers.string(ctx, "divisionName", _divisionName);