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') + "
" +