diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js
index db3507c78..7e02ab831 100644
--- a/dist/engine.bundle.js
+++ b/dist/engine.bundle.js
@@ -2634,7 +2634,7 @@ let Player = new PlayerObject();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CONSTANTS = {
- Version: "0.41.2",
+ Version: "0.42.0",
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
//the player will have this level assuming no multipliers. Multipliers can cause skills to go above this.
@@ -3128,7 +3128,6 @@ exports.CONSTANTS = {
* Added total multiplier information on the "Augmentations" page
* Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym
* Began migrating gameplay information to the ReadTheDocs documentation
- *
`
};
@@ -21691,6 +21690,22 @@ function NetscriptFunctions(workerScript) {
}
return [stock.playerShares, stock.playerAvgPx, stock.playerShortShares, stock.playerAvgShortPx];
},
+ getStockMaxShares : function(symbol) {
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getStockMaxShares", _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].ScriptGetStockRamCost);
+ }
+ updateDynamicRam("getStockMaxShares", _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].ScriptGetStockRamCost);
+
+ if (!_Player__WEBPACK_IMPORTED_MODULE_20__[/* Player */ "a"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_33__[/* makeRuntimeRejectMsg */ "d"])(workerScript, "You don't have TIX API Access! Cannot use getStockMaxShares()");
+ }
+ const stock = _StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_27__[/* SymbolToStockMap */ "e"][symbol];
+ if (stock == null) {
+ throw Object(_NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_33__[/* makeRuntimeRejectMsg */ "d"])(workerScript, "Invalid stock symbol passed into getStockMaxShares()");
+ }
+
+ return stock.maxShares;
+ },
buyStock : function(symbol, shares) {
if (workerScript.checkingRam) {
return updateStaticRam("buyStock", _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].ScriptBuySellStockRamCost);
@@ -38758,7 +38773,7 @@ Corporation.prototype.process = function() {
const totalDividends = (this.dividendPercentage / 100) * cycleProfit;
const retainedEarnings = cycleProfit - totalDividends;
const dividendsPerShare = totalDividends / this.totalShares;
- _Player__WEBPACK_IMPORTED_MODULE_15__[/* Player */ "a"].gainMoney(this.numShares * dividendsPerShare * (this.dividendTaxPercentage / 100));
+ _Player__WEBPACK_IMPORTED_MODULE_15__[/* Player */ "a"].gainMoney(this.numShares * dividendsPerShare * (1 - (this.dividendTaxPercentage / 100)));
this.funds = this.funds.plus(retainedEarnings);
}
} else {
@@ -39993,7 +40008,7 @@ Corporation.prototype.updateCorporationOverviewContent = function() {
`Dividends per share: ${_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__["numeralWrapper"].format(dividendsPerShare, "$0.000a")} / s
` +
`Your earnings as a shareholder (Pre-Tax): ${_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__["numeralWrapper"].format(playerEarnings, "$0.000a")} / s
` +
`Dividend Tax Rate: ${this.dividendTaxPercentage}%
` +
- `Your earnings as a shareholder (Post-Tax): ${_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__["numeralWrapper"].format(playerEarnings * (this.dividendTaxPercentage / 100), "$0.000a")} / s
`;
+ `Your earnings as a shareholder (Post-Tax): ${_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__["numeralWrapper"].format(playerEarnings * (1 - (this.dividendTaxPercentage / 100)), "$0.000a")} / s
`;
}
var txt = "Total Funds: " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__["numeralWrapper"].format(this.funds.toNumber(), '$0.000a') + "
" +
diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst
index c21b2ab76..9544f265f 100644
--- a/doc/source/changelog.rst
+++ b/doc/source/changelog.rst
@@ -3,6 +3,43 @@
Changelog
=========
+v0.42.0 - 1/8/2019
+------------------
+
+* Corporation Changes:
+ * Corporation can now be self-funded with $150b or using seed money in exchange for 500m newly-issued shares
+ * In BitNode-3, you no longer start with $150b
+ * Changed initial market prices for many materials
+ * Changed the way a material's demand, competition, and market price change over time
+ * The sale price of materials can no longer be marked-up as high
+ * Added a Research Tree mechanic. Spend Scientific Research on permanent upgrades for each industry
+ * You can now redistribute earnings to shareholders (including yourself) as dividends
+ * Cost of "Smart Supply" upgraded reduced from $50b to $25b
+ * Now has offline progress, which works similarly to the Gang/Bladeburner mechanics
+ * Slightly reduced the amount of money offered to you by investment firms
+ * Employee salaries now slowly increase over time
+ * Slightly reduced the effect "Real Estate" has on the Production Multiplier for the Agriculture industry
+ * Changed the way your Corporation's value is calculated (this is what determines stock price)
+ * After taking your corporation public, it is now possible to issue new shares to raise capital
+ * Issuing new shares can only be done once every 12 hours
+ * Buying back shares must now be done at a premium
+ * Selling shares can now only be done once per hour
+ * Selling large amounts of shares now immediately impacts stock price (during the transaction)
+ * Reduced the initial cost of the DreamSense upgrade from $8b to $4b, but increased its price multiplier
+ * Reduced the price multiplier for ABC SalesBots upgrade
+
+* Added getOrders() Netscript function to the TIX API
+* Added getAugmentationPrereq() Singularity function (by havocmayhem)
+* Added hackAnalyzePercent() and hackAnalyzeThreads() Netscript functions
+* Stock Market, Travel, and Corporation main menu links are now properly styled
+* Many pop-up/dialog boxes now support the 'Enter' and 'Esc' hotkeys. If you find a pop-up/dialog box that doesnt support this, let me know specifically which one ('Enter' for the default option, 'Esc' for cancelling and closing the pop-up box)
+* Added "brace_style = preserve_inline" configuration to Script Editor Beautifier
+* ServerProfiler.exe can now be purchased from the Dark Web
+* Added an option to copy save data to clipboard
+* Added total multiplier information on the "Augmentations" page
+* Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym
+* Began migrating gameplay information to the ReadTheDocs documentation
+
v0.41.2 - 11/23/2018
--------------------
* IMPORTANT - Netscript Changes:
diff --git a/src/Constants.ts b/src/Constants.ts
index ac2db5219..ea6ea6a12 100644
--- a/src/Constants.ts
+++ b/src/Constants.ts
@@ -1,7 +1,7 @@
import {IMap} from "./types";
export let CONSTANTS: IMap = {
- Version: "0.41.2",
+ Version: "0.42.0",
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
@@ -540,7 +540,6 @@ export let CONSTANTS: IMap = {
* Added total multiplier information on the "Augmentations" page
* Bug Fix: gymWorkout() Singularity function should now work properly with Millenium Fitness Gym
* Began migrating gameplay information to the ReadTheDocs documentation
- *
`
}
diff --git a/src/Corporation/Corporation.js b/src/Corporation/Corporation.js
index 3d7c6ee5e..6d498c038 100644
--- a/src/Corporation/Corporation.js
+++ b/src/Corporation/Corporation.js
@@ -2868,7 +2868,7 @@ Corporation.prototype.process = function() {
const totalDividends = (this.dividendPercentage / 100) * cycleProfit;
const retainedEarnings = cycleProfit - totalDividends;
const dividendsPerShare = totalDividends / this.totalShares;
- Player.gainMoney(this.numShares * dividendsPerShare * (this.dividendTaxPercentage / 100));
+ Player.gainMoney(this.numShares * dividendsPerShare * (1 - (this.dividendTaxPercentage / 100)));
this.funds = this.funds.plus(retainedEarnings);
}
} else {
@@ -4103,7 +4103,7 @@ Corporation.prototype.updateCorporationOverviewContent = function() {
`Dividends per share: ${numeralWrapper.format(dividendsPerShare, "$0.000a")} / s
` +
`Your earnings as a shareholder (Pre-Tax): ${numeralWrapper.format(playerEarnings, "$0.000a")} / s
` +
`Dividend Tax Rate: ${this.dividendTaxPercentage}%
` +
- `Your earnings as a shareholder (Post-Tax): ${numeralWrapper.format(playerEarnings * (this.dividendTaxPercentage / 100), "$0.000a")} / s
`;
+ `Your earnings as a shareholder (Post-Tax): ${numeralWrapper.format(playerEarnings * (1 - (this.dividendTaxPercentage / 100)), "$0.000a")} / s
`;
}
var txt = "Total Funds: " + numeralWrapper.format(this.funds.toNumber(), '$0.000a') + "
" +