mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-19 04:35:46 +01:00
Merge pull request #450 from danielyxie/stock-market-and-bladeburner-rebalancing
Stock market and bladeburner rebalancing
This commit is contained in:
commit
28b83b778f
@ -1016,7 +1016,5 @@
|
|||||||
<div class="loaderspinner"></div>
|
<div class="loaderspinner"></div>
|
||||||
<div class="loaderlabel">Loading Bitburner...</div>
|
<div class="loaderlabel">Loading Bitburner...</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="dist/vendor.bundle.js"></script>
|
|
||||||
<script src="dist/engine.bundle.js"></script>
|
|
||||||
<script type="text/javascript" src="dist/vendor.bundle.js"></script><script type="text/javascript" src="dist/engine.bundle.js"></script></body>
|
<script type="text/javascript" src="dist/vendor.bundle.js"></script><script type="text/javascript" src="dist/engine.bundle.js"></script></body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -44,9 +44,9 @@ var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to ge
|
|||||||
var DiffMultExponentialFactor = 0.28;
|
var DiffMultExponentialFactor = 0.28;
|
||||||
var DiffMultLinearFactor = 650;
|
var DiffMultLinearFactor = 650;
|
||||||
|
|
||||||
var EffAgiLinearFactor = 90e3;
|
var EffAgiLinearFactor = 40e3;
|
||||||
var EffDexLinearFactor = 90e3;
|
var EffDexLinearFactor = 40e3;
|
||||||
var EffAgiExponentialFactor = 0.031;
|
var EffAgiExponentialFactor = 0.032;
|
||||||
var EffDexExponentialFactor = 0.03;
|
var EffDexExponentialFactor = 0.03;
|
||||||
|
|
||||||
var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
|
var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
|
||||||
@ -659,7 +659,7 @@ function Bladeburner(params={}) {
|
|||||||
|
|
||||||
this.storedCycles = 0;
|
this.storedCycles = 0;
|
||||||
|
|
||||||
this.randomEventCounter = getRandomInt(300, 600); //5-10 minutes
|
this.randomEventCounter = getRandomInt(240, 600); //4-10 minutes
|
||||||
|
|
||||||
//These times are in seconds
|
//These times are in seconds
|
||||||
this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training)
|
this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training)
|
||||||
@ -734,7 +734,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"whatever city you are currently in.",
|
"whatever city you are currently in.",
|
||||||
baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,
|
baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,
|
||||||
rankGain:0.3, hpLoss:0.5,
|
rankGain:0.3, hpLoss:0.5,
|
||||||
count:getRandomInt(100, 500), countGrowth:getRandomInt(5, 75)/10,
|
count:getRandomInt(25, 500), countGrowth:getRandomInt(5, 75)/10,
|
||||||
weights:{hack:0,str:0.05,def:0.05,dex:0.35,agi:0.35,cha:0.1, int:0.05},
|
weights:{hack:0,str:0.05,def:0.05,dex:0.35,agi:0.35,cha:0.1, int:0.05},
|
||||||
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.9, int:1},
|
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.9, int:1},
|
||||||
isStealth:true
|
isStealth:true
|
||||||
@ -746,7 +746,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"current city, and will also increase its chaos level.",
|
"current city, and will also increase its chaos level.",
|
||||||
baseDifficulty:250, difficultyFac:1.04,rewardFac:1.085,
|
baseDifficulty:250, difficultyFac:1.04,rewardFac:1.085,
|
||||||
rankGain:0.9, hpLoss:1,
|
rankGain:0.9, hpLoss:1,
|
||||||
count:getRandomInt(25, 750), countGrowth:getRandomInt(5, 75)/10,
|
count:getRandomInt(5, 500), countGrowth:getRandomInt(5, 75)/10,
|
||||||
weights:{hack:0,str:0.15,def:0.15,dex:0.25,agi:0.25,cha:0.1, int:0.1},
|
weights:{hack:0,str:0.15,def:0.15,dex:0.25,agi:0.25,cha:0.1, int:0.1},
|
||||||
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
|
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
|
||||||
isKill:true
|
isKill:true
|
||||||
@ -758,7 +758,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"city, and will also increase its chaos level.",
|
"city, and will also increase its chaos level.",
|
||||||
baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065,
|
baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065,
|
||||||
rankGain:0.6, hpLoss:1,
|
rankGain:0.6, hpLoss:1,
|
||||||
count:getRandomInt(50, 1000), countGrowth:getRandomInt(5,75)/10,
|
count:getRandomInt(5, 500), countGrowth:getRandomInt(5,75)/10,
|
||||||
weights:{hack:0,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0.1, int:0.1},
|
weights:{hack:0,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0.1, int:0.1},
|
||||||
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
|
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
|
||||||
isKill:true
|
isKill:true
|
||||||
@ -773,7 +773,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"You will NOT lose HP from failed Investigation ops.",
|
"You will NOT lose HP from failed Investigation ops.",
|
||||||
baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25,
|
baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25,
|
||||||
rankGain:2.2, rankLoss:0.2,
|
rankGain:2.2, rankLoss:0.2,
|
||||||
count:getRandomInt(50, 200), countGrowth:getRandomInt(10, 40)/10,
|
count:getRandomInt(1, 250), countGrowth:getRandomInt(10, 40)/10,
|
||||||
weights:{hack:0.25,str:0.05,def:0.05,dex:0.2,agi:0.1,cha:0.25, int:0.1},
|
weights:{hack:0.25,str:0.05,def:0.05,dex:0.2,agi:0.1,cha:0.25, int:0.1},
|
||||||
decays:{hack:0.85,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
|
decays:{hack:0.85,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
|
||||||
isStealth:true
|
isStealth:true
|
||||||
@ -786,7 +786,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"data.",
|
"data.",
|
||||||
baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100,
|
baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100,
|
||||||
rankGain:4.4, rankLoss:0.4, hpLoss:2,
|
rankGain:4.4, rankLoss:0.4, hpLoss:2,
|
||||||
count:getRandomInt(25, 300), countGrowth:getRandomInt(10, 40)/10,
|
count:getRandomInt(1, 250), countGrowth:getRandomInt(10, 40)/10,
|
||||||
weights:{hack:0.2,str:0.05,def:0.05,dex:0.2,agi:0.2,cha:0.2, int:0.1},
|
weights:{hack:0.2,str:0.05,def:0.05,dex:0.2,agi:0.2,cha:0.2, int:0.1},
|
||||||
decays:{hack:0.8,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
|
decays:{hack:0.8,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
|
||||||
isStealth:true
|
isStealth:true
|
||||||
@ -797,7 +797,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"notorious Synthoid criminals.",
|
"notorious Synthoid criminals.",
|
||||||
baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500,
|
baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500,
|
||||||
rankGain:5.5, rankLoss:0.5, hpLoss:2.5,
|
rankGain:5.5, rankLoss:0.5, hpLoss:2.5,
|
||||||
count:getRandomInt(25,400), countGrowth:getRandomInt(3, 40)/10,
|
count:getRandomInt(1, 300), countGrowth:getRandomInt(3, 40)/10,
|
||||||
weights:{hack:0.25,str:0.05,def:0.05,dex:0.25,agi:0.1,cha:0.2, int:0.1},
|
weights:{hack:0.25,str:0.05,def:0.05,dex:0.25,agi:0.1,cha:0.2, int:0.1},
|
||||||
decays:{hack:0.8,str:0.85,def:0.85,dex:0.85,agi:0.85,cha:0.7, int:0.9},
|
decays:{hack:0.8,str:0.85,def:0.85,dex:0.85,agi:0.85,cha:0.7, int:0.9},
|
||||||
isStealth:true
|
isStealth:true
|
||||||
@ -809,7 +809,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"in order for this Operation to be successful",
|
"in order for this Operation to be successful",
|
||||||
baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000,
|
baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000,
|
||||||
rankGain:55,rankLoss:2.5,hpLoss:50,
|
rankGain:55,rankLoss:2.5,hpLoss:50,
|
||||||
count:getRandomInt(25, 150), countGrowth:getRandomInt(2, 40)/10,
|
count:getRandomInt(1, 200), countGrowth:getRandomInt(2, 40)/10,
|
||||||
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
|
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
|
||||||
decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
|
decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
|
||||||
isKill:true
|
isKill:true
|
||||||
@ -821,7 +821,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"drawing any attention. Stealth and discretion are key.",
|
"drawing any attention. Stealth and discretion are key.",
|
||||||
baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3,
|
baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3,
|
||||||
rankGain:22, rankLoss:2, hpLoss:10,
|
rankGain:22, rankLoss:2, hpLoss:10,
|
||||||
count:getRandomInt(25, 250), countGrowth:getRandomInt(1, 20)/10,
|
count:getRandomInt(1, 250), countGrowth:getRandomInt(1, 20)/10,
|
||||||
weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
|
weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
|
||||||
decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
|
decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
|
||||||
isStealth:true, isKill:true
|
isStealth:true, isKill:true
|
||||||
@ -833,7 +833,7 @@ Bladeburner.prototype.create = function() {
|
|||||||
"in the Synthoid communities.",
|
"in the Synthoid communities.",
|
||||||
baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3,
|
baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3,
|
||||||
rankGain:44, rankLoss:4, hpLoss:5,
|
rankGain:44, rankLoss:4, hpLoss:5,
|
||||||
count:getRandomInt(25, 200), countGrowth:getRandomInt(1, 20)/10,
|
count:getRandomInt(1, 200), countGrowth:getRandomInt(1, 20)/10,
|
||||||
weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
|
weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
|
||||||
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.8},
|
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.8},
|
||||||
isStealth:true, isKill:true
|
isStealth:true, isKill:true
|
||||||
@ -900,7 +900,7 @@ Bladeburner.prototype.process = function() {
|
|||||||
this.randomEventCounter -= seconds;
|
this.randomEventCounter -= seconds;
|
||||||
if (this.randomEventCounter <= 0) {
|
if (this.randomEventCounter <= 0) {
|
||||||
this.randomEvent();
|
this.randomEvent();
|
||||||
this.randomEventCounter = getRandomInt(300, 600);
|
this.randomEventCounter = getRandomInt(240, 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.processAction(seconds);
|
this.processAction(seconds);
|
||||||
@ -1833,7 +1833,7 @@ Bladeburner.prototype.createOverviewContent = function() {
|
|||||||
"Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed."
|
"Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed."
|
||||||
});
|
});
|
||||||
DomElems.overviewSkillPoints = createElement("p", {display:"block"});
|
DomElems.overviewSkillPoints = createElement("p", {display:"block"});
|
||||||
|
|
||||||
|
|
||||||
DomElems.overviewAugSuccessMult = createElement("p", {display:"block"});
|
DomElems.overviewAugSuccessMult = createElement("p", {display:"block"});
|
||||||
DomElems.overviewAugMaxStaminaMult = createElement("p", {display:"block"});
|
DomElems.overviewAugMaxStaminaMult = createElement("p", {display:"block"});
|
||||||
@ -3703,7 +3703,7 @@ function initBladeburner() {
|
|||||||
name:SkillNames.Overclock,
|
name:SkillNames.Overclock,
|
||||||
desc:"Each level of this skill decreases the time it takes " +
|
desc:"Each level of this skill decreases the time it takes " +
|
||||||
"to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)",
|
"to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)",
|
||||||
baseCost:5, costInc:1, maxLvl:95,
|
baseCost:5, costInc:1.1, maxLvl:95,
|
||||||
actionTime:1
|
actionTime:1
|
||||||
});
|
});
|
||||||
Skills[SkillNames.EvasiveSystem] = new Skill({
|
Skills[SkillNames.EvasiveSystem] = new Skill({
|
||||||
|
@ -497,11 +497,20 @@ let CONSTANTS = {
|
|||||||
|
|
||||||
LatestUpdate:
|
LatestUpdate:
|
||||||
`v0.40.3<br>
|
`v0.40.3<br>
|
||||||
* b1t_flum3.exe program can now be created immediately at Hacking level 1 (rather than hacking level 5)
|
-----------------------------------------------<br>
|
||||||
* UI improvements for the character overview panel and the left-hand menu (by mat-jaworski)
|
* Bladeburner Changes:<br>
|
||||||
* Updated documentation to reflect the fact that Netscript port handles (getPortHandle()) only works in NetscriptJS (2.0), NOT Netscript 1.0
|
*** Increased the effect that agi and dexterity have on action time<br>
|
||||||
* Added tryWrite() Netscript function
|
*** Starting number of contracts/operations available will be slightly lower<br>
|
||||||
* When working (for a company/faction), experience is gained immediately/continuously rather than all at once when the work is finished
|
*** Random events will now happen slightly more often<br>
|
||||||
|
*** Slightly increased the rate at which the Overclock skill point cost increases<br>
|
||||||
|
-----------------------------------------------<br>
|
||||||
|
* The maximum volatility of stocks is now randomized (randomly generated within a certain range every time the game resets)<br>
|
||||||
|
* Increased the range of possible values for initial stock prices<br>
|
||||||
|
* b1t_flum3.exe program can now be created immediately at Hacking level 1 (rather than hacking level 5)<br>
|
||||||
|
* UI improvements for the character overview panel and the left-hand menu (by mat-jaworski)<br>
|
||||||
|
* Updated documentation to reflect the fact that Netscript port handles (getPortHandle()) only works in NetscriptJS (2.0), NOT Netscript 1.0<br>
|
||||||
|
* Added tryWrite() Netscript function<br>
|
||||||
|
* When working (for a company/faction), experience is gained immediately/continuously rather than all at once when the work is finished<br>
|
||||||
* Improved the introductory tutorial`
|
* Improved the introductory tutorial`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,11 +34,12 @@ import {Server, getServer, AddToAllServers,
|
|||||||
GetServerByHostname} from "./Server";
|
GetServerByHostname} from "./Server";
|
||||||
import {Settings} from "./Settings";
|
import {Settings} from "./Settings";
|
||||||
import {SpecialServerIps} from "./SpecialServerIps";
|
import {SpecialServerIps} from "./SpecialServerIps";
|
||||||
|
import {Stock} from "./Stock";
|
||||||
import {StockMarket, StockSymbols, SymbolToStockMap, initStockSymbols,
|
import {StockMarket, StockSymbols, SymbolToStockMap, initStockSymbols,
|
||||||
initStockMarket, initSymbolToStockMap, stockMarketCycle, buyStock,
|
initStockMarket, initSymbolToStockMap, stockMarketCycle, buyStock,
|
||||||
sellStock, updateStockPrices, displayStockMarketContent,
|
sellStock, updateStockPrices, displayStockMarketContent,
|
||||||
updateStockTicker, updateStockPlayerPosition,
|
updateStockTicker, updateStockPlayerPosition,
|
||||||
Stock, shortStock, sellShort, OrderTypes,
|
shortStock, sellShort, OrderTypes,
|
||||||
PositionTypes, placeOrder, cancelOrder} from "./StockMarket";
|
PositionTypes, placeOrder, cancelOrder} from "./StockMarket";
|
||||||
import {post} from "./ui/postToTerminal";
|
import {post} from "./ui/postToTerminal";
|
||||||
import {TextFile, getTextFile, createTextFile} from "./TextFile";
|
import {TextFile, getTextFile, createTextFile} from "./TextFile";
|
||||||
|
95
src/Stock.ts
Normal file
95
src/Stock.ts
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
import { Generic_fromJSON, Generic_toJSON, Reviver } from "../utils/JSONReviver";
|
||||||
|
|
||||||
|
export class Stock {
|
||||||
|
/**
|
||||||
|
* Initializes a Stock from a JSON save state
|
||||||
|
*/
|
||||||
|
static fromJSON(value: any): Stock {
|
||||||
|
return Generic_fromJSON(Stock, value.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The stock's ticker symbol
|
||||||
|
*/
|
||||||
|
readonly symbol: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the company that the stock is for
|
||||||
|
*/
|
||||||
|
readonly name: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stock's share price
|
||||||
|
*/
|
||||||
|
price: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of shares the player owns in the LONG position
|
||||||
|
*/
|
||||||
|
playerShares: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Average price of stocks that the player owns in the LONG position
|
||||||
|
*/
|
||||||
|
playerAvgPx: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of shares the player owns in the SHORT position
|
||||||
|
*/
|
||||||
|
playerShortShares: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Average price of stocks that the player owns in the SHORT position
|
||||||
|
*/
|
||||||
|
playerAvgShortPx: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum volatility
|
||||||
|
*/
|
||||||
|
readonly mv: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bear or bull (more likely to go up or down, based on otlkMag)
|
||||||
|
*/
|
||||||
|
b: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outlook magnitude. Represents the stock's forecast and likelihood
|
||||||
|
* of increasing/decreasing (based on whether its in bear or bull mode)
|
||||||
|
*/
|
||||||
|
otlkMag: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The HTML element that displays the stock's info in the UI
|
||||||
|
*/
|
||||||
|
posTxtEl: HTMLElement | null;
|
||||||
|
|
||||||
|
constructor(name: string="",
|
||||||
|
symbol: string="",
|
||||||
|
mv: number=1,
|
||||||
|
b: boolean=true,
|
||||||
|
otlkMag: number=0,
|
||||||
|
initPrice: number = 10e3) {
|
||||||
|
this.name = name;
|
||||||
|
this.symbol = symbol;
|
||||||
|
this.price = initPrice;
|
||||||
|
this.playerShares = 0;
|
||||||
|
this.playerAvgPx = 0;
|
||||||
|
this.playerShortShares = 0;
|
||||||
|
this.playerAvgShortPx = 0;
|
||||||
|
this.mv = mv;
|
||||||
|
this.b = b;
|
||||||
|
this.otlkMag = otlkMag;
|
||||||
|
|
||||||
|
this.posTxtEl = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize the Stock to a JSON save state.
|
||||||
|
*/
|
||||||
|
toJSON(): any {
|
||||||
|
return Generic_toJSON("Stock", this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Reviver.constructors.Stock = Stock;
|
@ -3,6 +3,7 @@ import {Locations} from "./Locations";
|
|||||||
import {hasWallStreetSF, wallStreetSFLvl} from "./NetscriptFunctions";
|
import {hasWallStreetSF, wallStreetSFLvl} from "./NetscriptFunctions";
|
||||||
import {WorkerScript} from "./NetscriptWorker";
|
import {WorkerScript} from "./NetscriptWorker";
|
||||||
import {Player} from "./Player";
|
import {Player} from "./Player";
|
||||||
|
import {Stock} from "./Stock";
|
||||||
|
|
||||||
import {dialogBoxCreate} from "../utils/DialogBox";
|
import {dialogBoxCreate} from "../utils/DialogBox";
|
||||||
import {clearEventListeners} from "../utils/uiHelpers/clearEventListeners";
|
import {clearEventListeners} from "../utils/uiHelpers/clearEventListeners";
|
||||||
@ -24,32 +25,6 @@ import {yesNoBoxCreate, yesNoTxtInpBoxCreate,
|
|||||||
|
|
||||||
let StockPriceCap = 1e9; //Put a limit on how high a price can go
|
let StockPriceCap = 1e9; //Put a limit on how high a price can go
|
||||||
|
|
||||||
function Stock(name, symbol, mv, b, otlkMag, initPrice=10000) {
|
|
||||||
this.symbol = symbol;
|
|
||||||
this.name = name;
|
|
||||||
this.price = initPrice;
|
|
||||||
|
|
||||||
this.playerShares = 0;
|
|
||||||
this.playerAvgPx = 0;
|
|
||||||
this.playerShortShares = 0;
|
|
||||||
this.playerAvgShortPx = 0;
|
|
||||||
this.mv = mv;
|
|
||||||
this.b = b;
|
|
||||||
this.otlkMag = otlkMag;
|
|
||||||
|
|
||||||
this.posTxtEl = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Stock.prototype.toJSON = function() {
|
|
||||||
return Generic_toJSON("Stock", this);
|
|
||||||
}
|
|
||||||
|
|
||||||
Stock.fromJSON = function(value) {
|
|
||||||
return Generic_fromJSON(Stock, value.data);
|
|
||||||
}
|
|
||||||
|
|
||||||
Reviver.constructors.Stock = Stock;
|
|
||||||
|
|
||||||
var OrderTypes = {
|
var OrderTypes = {
|
||||||
LimitBuy: "Limit Buy Order",
|
LimitBuy: "Limit Buy Order",
|
||||||
LimitSell: "Limit Sell Order",
|
LimitSell: "Limit Sell Order",
|
||||||
@ -253,135 +228,135 @@ function initStockMarket() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ecorp = Locations.AevumECorp;
|
var ecorp = Locations.AevumECorp;
|
||||||
var ecorpStk = new Stock(ecorp, StockSymbols[ecorp], 0.45, true, 19, getRandomInt(20000, 25000));
|
var ecorpStk = new Stock(ecorp, StockSymbols[ecorp], getRandomInt(40, 50)/100, true, 19, getRandomInt(17e3, 28e3));
|
||||||
StockMarket[ecorp] = ecorpStk;
|
StockMarket[ecorp] = ecorpStk;
|
||||||
|
|
||||||
var megacorp = Locations.Sector12MegaCorp;
|
var megacorp = Locations.Sector12MegaCorp;
|
||||||
var megacorpStk = new Stock(megacorp, StockSymbols[megacorp], 0.45, true, 19, getRandomInt(25000, 33000));
|
var megacorpStk = new Stock(megacorp, StockSymbols[megacorp], getRandomInt(40,50)/100, true, 19, getRandomInt(24e3, 34e3));
|
||||||
StockMarket[megacorp] = megacorpStk;
|
StockMarket[megacorp] = megacorpStk;
|
||||||
|
|
||||||
var blade = Locations.Sector12BladeIndustries;
|
var blade = Locations.Sector12BladeIndustries;
|
||||||
var bladeStk = new Stock(blade, StockSymbols[blade], 0.75, true, 13, getRandomInt(15000, 22000));
|
var bladeStk = new Stock(blade, StockSymbols[blade], getRandomInt(70, 80)/100, true, 13, getRandomInt(12e3, 25e3));
|
||||||
StockMarket[blade] = bladeStk;
|
StockMarket[blade] = bladeStk;
|
||||||
|
|
||||||
var clarke = Locations.AevumClarkeIncorporated;
|
var clarke = Locations.AevumClarkeIncorporated;
|
||||||
var clarkeStk = new Stock(clarke, StockSymbols[clarke], 0.7, true, 12, getRandomInt(15000, 20000));
|
var clarkeStk = new Stock(clarke, StockSymbols[clarke], getRandomInt(65, 75)/100, true, 12, getRandomInt(10e3, 25e3));
|
||||||
StockMarket[clarke] = clarkeStk;
|
StockMarket[clarke] = clarkeStk;
|
||||||
|
|
||||||
var omnitek = Locations.VolhavenOmniTekIncorporated;
|
var omnitek = Locations.VolhavenOmniTekIncorporated;
|
||||||
var omnitekStk = new Stock(omnitek, StockSymbols[omnitek], 0.65, true, 12, getRandomInt(35000, 40000));
|
var omnitekStk = new Stock(omnitek, StockSymbols[omnitek], getRandomInt(60, 70)/100, true, 12, getRandomInt(32e3, 43e3));
|
||||||
StockMarket[omnitek] = omnitekStk;
|
StockMarket[omnitek] = omnitekStk;
|
||||||
|
|
||||||
var foursigma = Locations.Sector12FourSigma;
|
var foursigma = Locations.Sector12FourSigma;
|
||||||
var foursigmaStk = new Stock(foursigma, StockSymbols[foursigma], 1.05, true, 17, getRandomInt(60000, 70000));
|
var foursigmaStk = new Stock(foursigma, StockSymbols[foursigma], getRandomInt(100, 110)/100, true, 17, getRandomInt(50e3, 80e3));
|
||||||
StockMarket[foursigma] = foursigmaStk;
|
StockMarket[foursigma] = foursigmaStk;
|
||||||
|
|
||||||
var kuaigong = Locations.ChongqingKuaiGongInternational;
|
var kuaigong = Locations.ChongqingKuaiGongInternational;
|
||||||
var kuaigongStk = new Stock(kuaigong, StockSymbols[kuaigong], 0.8, true, 10, getRandomInt(20000, 24000));
|
var kuaigongStk = new Stock(kuaigong, StockSymbols[kuaigong], getRandomInt(75, 85)/100, true, 10, getRandomInt(16e3, 28e3));
|
||||||
StockMarket[kuaigong] = kuaigongStk;
|
StockMarket[kuaigong] = kuaigongStk;
|
||||||
|
|
||||||
var fulcrum = Locations.AevumFulcrumTechnologies;
|
var fulcrum = Locations.AevumFulcrumTechnologies;
|
||||||
var fulcrumStk = new Stock(fulcrum, StockSymbols[fulcrum], 1.25, true, 16, getRandomInt(30000, 35000));
|
var fulcrumStk = new Stock(fulcrum, StockSymbols[fulcrum], getRandomInt(120, 130)/100, true, 16, getRandomInt(29e3, 36e3));
|
||||||
StockMarket[fulcrum] = fulcrumStk;
|
StockMarket[fulcrum] = fulcrumStk;
|
||||||
|
|
||||||
var storm = Locations.IshimaStormTechnologies;
|
var storm = Locations.IshimaStormTechnologies;
|
||||||
var stormStk = new Stock(storm, StockSymbols[storm], 0.85, true, 7, getRandomInt(21000, 24000));
|
var stormStk = new Stock(storm, StockSymbols[storm], getRandomInt(80, 90)/100, true, 7, getRandomInt(20e3, 25e3));
|
||||||
StockMarket[storm] = stormStk;
|
StockMarket[storm] = stormStk;
|
||||||
|
|
||||||
var defcomm = Locations.NewTokyoDefComm;
|
var defcomm = Locations.NewTokyoDefComm;
|
||||||
var defcommStk = new Stock(defcomm, StockSymbols[defcomm], 0.65, true, 10, getRandomInt(10000, 15000));
|
var defcommStk = new Stock(defcomm, StockSymbols[defcomm], getRandomInt(60, 70)/100, true, 10, getRandomInt(6e3, 19e3));
|
||||||
StockMarket[defcomm] = defcommStk;
|
StockMarket[defcomm] = defcommStk;
|
||||||
|
|
||||||
var helios = Locations.VolhavenHeliosLabs;
|
var helios = Locations.VolhavenHeliosLabs;
|
||||||
var heliosStk = new Stock(helios, StockSymbols[helios], 0.6, true, 9, getRandomInt(12000, 16000));
|
var heliosStk = new Stock(helios, StockSymbols[helios], getRandomInt(55, 65)/100, true, 9, getRandomInt(10e3, 18e3));
|
||||||
StockMarket[helios] = heliosStk;
|
StockMarket[helios] = heliosStk;
|
||||||
|
|
||||||
var vitalife = Locations.NewTokyoVitaLife;
|
var vitalife = Locations.NewTokyoVitaLife;
|
||||||
var vitalifeStk = new Stock(vitalife, StockSymbols[vitalife], 0.75, true, 7, getRandomInt(10000, 12000));
|
var vitalifeStk = new Stock(vitalife, StockSymbols[vitalife], getRandomInt(70, 80)/100, true, 7, getRandomInt(8e3, 14e3));
|
||||||
StockMarket[vitalife] = vitalifeStk;
|
StockMarket[vitalife] = vitalifeStk;
|
||||||
|
|
||||||
var icarus = Locations.Sector12IcarusMicrosystems;
|
var icarus = Locations.Sector12IcarusMicrosystems;
|
||||||
var icarusStk = new Stock(icarus, StockSymbols[icarus], 0.65, true, 7.5, getRandomInt(16000, 20000));
|
var icarusStk = new Stock(icarus, StockSymbols[icarus], getRandomInt(60, 70)/100, true, 7.5, getRandomInt(12e3, 24e3));
|
||||||
StockMarket[icarus] = icarusStk;
|
StockMarket[icarus] = icarusStk;
|
||||||
|
|
||||||
var universalenergy = Locations.Sector12UniversalEnergy;
|
var universalenergy = Locations.Sector12UniversalEnergy;
|
||||||
var universalenergyStk = new Stock(universalenergy, StockSymbols[universalenergy], 0.55, true, 10, getRandomInt(20000, 25000));
|
var universalenergyStk = new Stock(universalenergy, StockSymbols[universalenergy], getRandomInt(50, 60)/100, true, 10, getRandomInt(16e3, 29e3));
|
||||||
StockMarket[universalenergy] = universalenergyStk;
|
StockMarket[universalenergy] = universalenergyStk;
|
||||||
|
|
||||||
var aerocorp = Locations.AevumAeroCorp;
|
var aerocorp = Locations.AevumAeroCorp;
|
||||||
var aerocorpStk = new Stock(aerocorp, StockSymbols[aerocorp], 0.6, true, 6, getRandomInt(10000, 15000));
|
var aerocorpStk = new Stock(aerocorp, StockSymbols[aerocorp], getRandomInt(55, 65)/100, true, 6, getRandomInt(8e3, 17e3));
|
||||||
StockMarket[aerocorp] = aerocorpStk;
|
StockMarket[aerocorp] = aerocorpStk;
|
||||||
|
|
||||||
var omnia = Locations.VolhavenOmniaCybersystems;
|
var omnia = Locations.VolhavenOmniaCybersystems;
|
||||||
var omniaStk = new Stock(omnia, StockSymbols[omnia], 0.7, true, 4.5, getRandomInt(9000, 12000));
|
var omniaStk = new Stock(omnia, StockSymbols[omnia], getRandomInt(65, 75)/100, true, 4.5, getRandomInt(6e3, 15e3));
|
||||||
StockMarket[omnia] = omniaStk;
|
StockMarket[omnia] = omniaStk;
|
||||||
|
|
||||||
var solaris = Locations.ChongqingSolarisSpaceSystems;
|
var solaris = Locations.ChongqingSolarisSpaceSystems;
|
||||||
var solarisStk = new Stock(solaris, StockSymbols[solaris], 0.75, true, 8.5, getRandomInt(18000, 24000));
|
var solarisStk = new Stock(solaris, StockSymbols[solaris], getRandomInt(70, 80)/100, true, 8.5, getRandomInt(14e3, 28e3));
|
||||||
StockMarket[solaris] = solarisStk;
|
StockMarket[solaris] = solarisStk;
|
||||||
|
|
||||||
var globalpharm = Locations.NewTokyoGlobalPharmaceuticals;
|
var globalpharm = Locations.NewTokyoGlobalPharmaceuticals;
|
||||||
var globalpharmStk = new Stock(globalpharm, StockSymbols[globalpharm], 0.6, true, 10.5, getRandomInt(18000, 24000));
|
var globalpharmStk = new Stock(globalpharm, StockSymbols[globalpharm], getRandomInt(55, 65)/100, true, 10.5, getRandomInt(12e3, 30e3));
|
||||||
StockMarket[globalpharm] = globalpharmStk;
|
StockMarket[globalpharm] = globalpharmStk;
|
||||||
|
|
||||||
var nova = Locations.IshimaNovaMedical;
|
var nova = Locations.IshimaNovaMedical;
|
||||||
var novaStk = new Stock(nova, StockSymbols[nova], 0.75, true, 5, getRandomInt(18000, 24000));
|
var novaStk = new Stock(nova, StockSymbols[nova], getRandomInt(70, 80)/100, true, 5, getRandomInt(15e3, 27e3));
|
||||||
StockMarket[nova] = novaStk;
|
StockMarket[nova] = novaStk;
|
||||||
|
|
||||||
var watchdog = Locations.AevumWatchdogSecurity;
|
var watchdog = Locations.AevumWatchdogSecurity;
|
||||||
var watchdogStk = new Stock(watchdog, StockSymbols[watchdog], 2.5, true, 1.5, getRandomInt(5000, 7500));
|
var watchdogStk = new Stock(watchdog, StockSymbols[watchdog], getRandomInt(240, 260)/100, true, 1.5, getRandomInt(4e3, 8.5e3));
|
||||||
StockMarket[watchdog] = watchdogStk;
|
StockMarket[watchdog] = watchdogStk;
|
||||||
|
|
||||||
var lexocorp = Locations.VolhavenLexoCorp;
|
var lexocorp = Locations.VolhavenLexoCorp;
|
||||||
var lexocorpStk = new Stock(lexocorp, StockSymbols[lexocorp], 1.25, true, 6, getRandomInt(5000, 7500));
|
var lexocorpStk = new Stock(lexocorp, StockSymbols[lexocorp], getRandomInt(115, 135)/100, true, 6, getRandomInt(4.5e3, 8e3));
|
||||||
StockMarket[lexocorp] = lexocorpStk;
|
StockMarket[lexocorp] = lexocorpStk;
|
||||||
|
|
||||||
var rho = Locations.AevumRhoConstruction;
|
var rho = Locations.AevumRhoConstruction;
|
||||||
var rhoStk = new Stock(rho, StockSymbols[rho], 0.6, true, 1, getRandomInt(3000, 6000));
|
var rhoStk = new Stock(rho, StockSymbols[rho], getRandomInt(50, 70)/100, true, 1, getRandomInt(2e3, 7e3));
|
||||||
StockMarket[rho] = rhoStk;
|
StockMarket[rho] = rhoStk;
|
||||||
|
|
||||||
var alpha = Locations.Sector12AlphaEnterprises;
|
var alpha = Locations.Sector12AlphaEnterprises;
|
||||||
var alphaStk = new Stock(alpha, StockSymbols[alpha], 1.9, true, 10, getRandomInt(5000, 7500));
|
var alphaStk = new Stock(alpha, StockSymbols[alpha], getRandomInt(175, 205)/100, true, 10, getRandomInt(4e3, 8.5e3));
|
||||||
StockMarket[alpha] = alphaStk;
|
StockMarket[alpha] = alphaStk;
|
||||||
|
|
||||||
var syscore = Locations.VolhavenSysCoreSecurities;
|
var syscore = Locations.VolhavenSysCoreSecurities;
|
||||||
var syscoreStk = new Stock(syscore, StockSymbols[syscore], 1.6, true, 3, getRandomInt(4000, 7000))
|
var syscoreStk = new Stock(syscore, StockSymbols[syscore], getRandomInt(150, 170)/100, true, 3, getRandomInt(3e3, 8e3));
|
||||||
StockMarket[syscore] = syscoreStk;
|
StockMarket[syscore] = syscoreStk;
|
||||||
|
|
||||||
var computek = Locations.VolhavenCompuTek;
|
var computek = Locations.VolhavenCompuTek;
|
||||||
var computekStk = new Stock(computek, StockSymbols[computek], 0.9, true, 4, getRandomInt(2000, 5000));
|
var computekStk = new Stock(computek, StockSymbols[computek], getRandomInt(80, 100)/100, true, 4, getRandomInt(1e3, 6e3));
|
||||||
StockMarket[computek] = computekStk;
|
StockMarket[computek] = computekStk;
|
||||||
|
|
||||||
var netlink = Locations.AevumNetLinkTechnologies;
|
var netlink = Locations.AevumNetLinkTechnologies;
|
||||||
var netlinkStk = new Stock(netlink, StockSymbols[netlink], 4.2, true, 1, getRandomInt(2000, 4000));
|
var netlinkStk = new Stock(netlink, StockSymbols[netlink], getRandomInt(400, 430)/100, true, 1, getRandomInt(1e3, 5e3));
|
||||||
StockMarket[netlink] = netlinkStk;
|
StockMarket[netlink] = netlinkStk;
|
||||||
|
|
||||||
var omega = Locations.IshimaOmegaSoftware;
|
var omega = Locations.IshimaOmegaSoftware;
|
||||||
var omegaStk = new Stock(omega, StockSymbols[omega], 1, true, 0.5, getRandomInt(3000, 6000));
|
var omegaStk = new Stock(omega, StockSymbols[omega], getRandomInt(90, 110)/100, true, 0.5, getRandomInt(1e3, 8e3));
|
||||||
StockMarket[omega] = omegaStk;
|
StockMarket[omega] = omegaStk;
|
||||||
|
|
||||||
var fns = Locations.Sector12FoodNStuff;
|
var fns = Locations.Sector12FoodNStuff;
|
||||||
var fnsStk = new Stock(fns, StockSymbols[fns], 0.75, false, 1, getRandomInt(1000, 4000));
|
var fnsStk = new Stock(fns, StockSymbols[fns], getRandomInt(70, 80)/100, false, 1, getRandomInt(500, 4.5e3));
|
||||||
StockMarket[fns] = fnsStk;
|
StockMarket[fns] = fnsStk;
|
||||||
|
|
||||||
var sigmacosm = "Sigma Cosmetics";
|
var sigmacosm = "Sigma Cosmetics";
|
||||||
var sigmacosmStk = new Stock(sigmacosm, StockSymbols[sigmacosm], 2.8, true, 0, getRandomInt(2000, 3000));
|
var sigmacosmStk = new Stock(sigmacosm, StockSymbols[sigmacosm], getRandomInt(260, 300)/100, true, 0, getRandomInt(1.5e3, 3.5e3));
|
||||||
StockMarket[sigmacosm] = sigmacosmStk;
|
StockMarket[sigmacosm] = sigmacosmStk;
|
||||||
|
|
||||||
var joesguns = "Joes Guns";
|
var joesguns = "Joes Guns";
|
||||||
var joesgunsStk = new Stock(joesguns, StockSymbols[joesguns], 3.8, true, 1, getRandomInt(500, 1000));
|
var joesgunsStk = new Stock(joesguns, StockSymbols[joesguns], getRandomInt(360, 400)/100, true, 1, getRandomInt(250, 1.5e3));
|
||||||
StockMarket[joesguns] = joesgunsStk;
|
StockMarket[joesguns] = joesgunsStk;
|
||||||
|
|
||||||
var catalyst = "Catalyst Ventures";
|
var catalyst = "Catalyst Ventures";
|
||||||
var catalystStk = new Stock(catalyst, StockSymbols[catalyst], 1.45, true, 13.5, getRandomInt(500, 1000));
|
var catalystStk = new Stock(catalyst, StockSymbols[catalyst], getRandomInt(120, 175)/100, true, 13.5, getRandomInt(250, 1.5e3));
|
||||||
StockMarket[catalyst] = catalystStk;
|
StockMarket[catalyst] = catalystStk;
|
||||||
|
|
||||||
var microdyne = "Microdyne Technologies";
|
var microdyne = "Microdyne Technologies";
|
||||||
var microdyneStk = new Stock(microdyne, StockSymbols[microdyne], 0.75, true, 8, getRandomInt(20000, 25000));
|
var microdyneStk = new Stock(microdyne, StockSymbols[microdyne], getRandomInt(70, 80)/100, true, 8, getRandomInt(15e3, 30e3));
|
||||||
StockMarket[microdyne] = microdyneStk;
|
StockMarket[microdyne] = microdyneStk;
|
||||||
|
|
||||||
var titanlabs = "Titan Laboratories";
|
var titanlabs = "Titan Laboratories";
|
||||||
var titanlabsStk = new Stock(titanlabs, StockSymbols[titanlabs], 0.6, true, 11, getRandomInt(15000, 20000));
|
var titanlabsStk = new Stock(titanlabs, StockSymbols[titanlabs], getRandomInt(50, 70)/100, true, 11, getRandomInt(12e3, 24e3));
|
||||||
StockMarket[titanlabs] = titanlabsStk;
|
StockMarket[titanlabs] = titanlabsStk;
|
||||||
|
|
||||||
var orders = {};
|
var orders = {};
|
||||||
|
@ -150,7 +150,7 @@ $(document).keydown(function(e) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let Engine = {
|
const Engine = {
|
||||||
version: "",
|
version: "",
|
||||||
Debug: true,
|
Debug: true,
|
||||||
overview: new CharacterOverview(),
|
overview: new CharacterOverview(),
|
||||||
|
@ -1020,7 +1020,5 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
|
|||||||
<div class="loaderspinner"></div>
|
<div class="loaderspinner"></div>
|
||||||
<div class="loaderlabel">Loading Bitburner...</div>
|
<div class="loaderlabel">Loading Bitburner...</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="dist/vendor.bundle.js"></script>
|
|
||||||
<script src="dist/engine.bundle.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user