2018-06-26 18:34:11 +02:00
|
|
|
import {deleteActiveScriptsItem} from "./ActiveScriptsUI";
|
2017-08-30 19:44:29 +02:00
|
|
|
import {Augmentations, augmentationExists,
|
2018-06-26 18:34:11 +02:00
|
|
|
initAugmentations, AugmentationNames} from "./Augmentations";
|
|
|
|
import {initBitNodeMultipliers} from "./BitNode";
|
|
|
|
import {Bladeburner} from "./Bladeburner";
|
|
|
|
import {writeCinematicText} from "./CinematicText";
|
|
|
|
import {Companies, Company, initCompanies} from "./Company";
|
|
|
|
import {Programs} from "./CreateProgram";
|
|
|
|
import {Engine} from "./engine";
|
2017-08-30 19:44:29 +02:00
|
|
|
import {Factions, Faction, initFactions,
|
2018-06-26 18:34:11 +02:00
|
|
|
joinFaction} from "./Faction";
|
|
|
|
import {deleteGangDisplayContent} from "./Gang";
|
|
|
|
import {Locations} from "./Location";
|
|
|
|
import {initMessages, Messages, Message} from "./Message";
|
|
|
|
import {initSingularitySFFlags, hasWallStreetSF}from "./NetscriptFunctions";
|
2017-08-30 19:44:29 +02:00
|
|
|
import {WorkerScript, workerScripts,
|
2018-06-26 18:34:11 +02:00
|
|
|
prestigeWorkerScripts} from "./NetscriptWorker";
|
|
|
|
import {Player} from "./Player";
|
2018-03-12 20:39:04 +01:00
|
|
|
|
2017-08-30 19:44:29 +02:00
|
|
|
import {AllServers, AddToAllServers,
|
|
|
|
initForeignServers, Server,
|
|
|
|
prestigeAllServers,
|
2018-06-26 18:34:11 +02:00
|
|
|
prestigeHomeComputer} from "./Server";
|
2017-08-30 19:44:29 +02:00
|
|
|
import {SpecialServerIps, SpecialServerIpsMap,
|
|
|
|
prestigeSpecialServerIps,
|
2018-06-26 18:34:11 +02:00
|
|
|
SpecialServerNames} from "./SpecialServerIps";
|
2017-08-30 19:44:29 +02:00
|
|
|
import {initStockMarket, initSymbolToStockMap,
|
2017-08-31 19:19:28 +02:00
|
|
|
stockMarketContentCreated,
|
2018-06-26 18:34:11 +02:00
|
|
|
setStockMarketContentCreated} from "./StockMarket";
|
|
|
|
import {Terminal, postNetburnerText} from "./Terminal";
|
2018-05-30 19:41:17 +02:00
|
|
|
import Decimal from "decimal.js";
|
2018-06-26 18:34:11 +02:00
|
|
|
import {dialogBoxCreate} from "../utils/DialogBox";
|
2018-07-05 19:36:02 +02:00
|
|
|
import {removeElementById} from "../utils/uiHelpers/removeElementById";
|
2018-07-05 06:38:00 +02:00
|
|
|
import {createElement} from "../utils/uiHelpers/createElement";
|
2018-07-05 19:09:00 +02:00
|
|
|
import {createPopup} from "../utils/uiHelpers/createPopup";
|
2018-07-04 06:54:11 +02:00
|
|
|
import {exceptionAlert} from "../utils/helpers/exceptionAlert";
|
2018-05-02 19:38:11 +02:00
|
|
|
import {yesNoBoxCreate, yesNoBoxGetYesButton,
|
2018-06-26 18:34:11 +02:00
|
|
|
yesNoBoxGetNoButton, yesNoBoxClose} from "../utils/YesNoBox";
|
2017-02-20 23:06:16 +01:00
|
|
|
|
2018-06-03 03:37:56 +02:00
|
|
|
let BitNode8StartingMoney = 250e6;
|
|
|
|
|
2017-02-20 23:06:16 +01:00
|
|
|
//Prestige by purchasing augmentation
|
|
|
|
function prestigeAugmentation() {
|
2017-08-13 07:01:33 +02:00
|
|
|
initBitNodeMultipliers();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-08-30 19:44:29 +02:00
|
|
|
Player.prestigeAugmentation();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-06-17 04:53:57 +02:00
|
|
|
//Delete all Worker Scripts objects
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeWorkerScripts();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-05-08 18:00:34 +02:00
|
|
|
var homeComp = Player.getHomeComputer();
|
2017-05-08 16:33:26 +02:00
|
|
|
//Delete all servers except home computer
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeAllServers();
|
|
|
|
|
2017-05-13 06:40:12 +02:00
|
|
|
//Delete Special Server IPs
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeSpecialServerIps(); //Must be done before initForeignServers()
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-05-08 16:33:26 +02:00
|
|
|
//Reset home computer (only the programs) and add to AllServers
|
2018-03-04 00:55:58 +01:00
|
|
|
AddToAllServers(homeComp);
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeHomeComputer(homeComp);
|
|
|
|
|
2017-07-27 04:56:14 +02:00
|
|
|
if (augmentationExists(AugmentationNames.Neurolink) &&
|
2017-05-18 22:00:37 +02:00
|
|
|
Augmentations[AugmentationNames.Neurolink].owned) {
|
2018-06-02 01:31:34 +02:00
|
|
|
homeComp.programs.push(Programs.FTPCrackProgram.name);
|
|
|
|
homeComp.programs.push(Programs.RelaySMTPProgram.name);
|
2017-07-27 04:56:14 +02:00
|
|
|
}
|
|
|
|
if (augmentationExists(AugmentationNames.CashRoot) &&
|
2017-05-18 22:00:37 +02:00
|
|
|
Augmentations[AugmentationNames.CashRoot].owned) {
|
2017-08-30 19:44:29 +02:00
|
|
|
Player.setMoney(new Decimal(1000000));
|
2018-06-02 01:31:34 +02:00
|
|
|
homeComp.programs.push(Programs.BruteSSHProgram.name);
|
2017-05-18 22:00:37 +02:00
|
|
|
}
|
2017-08-30 19:44:29 +02:00
|
|
|
|
2017-05-12 20:12:32 +02:00
|
|
|
//Re-create foreign servers
|
|
|
|
initForeignServers();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-05-16 00:22:17 +02:00
|
|
|
//Darkweb is purchase-able
|
|
|
|
document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button");
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-06-20 18:11:33 +02:00
|
|
|
//Gain favor for Companies
|
2017-02-20 23:06:16 +01:00
|
|
|
for (var member in Companies) {
|
2017-05-10 22:21:15 +02:00
|
|
|
if (Companies.hasOwnProperty(member)) {
|
2017-06-20 18:11:33 +02:00
|
|
|
Companies[member].gainFavor();
|
2017-05-10 22:21:15 +02:00
|
|
|
}
|
2017-02-20 23:06:16 +01:00
|
|
|
}
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-06-20 18:11:33 +02:00
|
|
|
//Gain favor for factions
|
2017-02-20 23:06:16 +01:00
|
|
|
for (var member in Factions) {
|
2017-05-10 22:21:15 +02:00
|
|
|
if (Factions.hasOwnProperty(member)) {
|
2017-06-20 18:11:33 +02:00
|
|
|
Factions[member].gainFavor();
|
2017-05-10 22:21:15 +02:00
|
|
|
}
|
2017-02-20 23:06:16 +01:00
|
|
|
}
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-05-12 20:12:32 +02:00
|
|
|
//Stop a Terminal action if there is onerror
|
|
|
|
if (Engine._actionInProgress) {
|
|
|
|
Engine._actionInProgress = false;
|
|
|
|
Terminal.finishAction(true);
|
|
|
|
}
|
2017-07-27 04:56:14 +02:00
|
|
|
|
|
|
|
//Re-initialize things - This will update any changes
|
2017-06-26 01:39:17 +02:00
|
|
|
initFactions(); //Factions must be initialized before augmentations
|
2017-08-13 07:01:33 +02:00
|
|
|
initAugmentations(); //Calls reapplyAllAugmentations() and resets Player multipliers
|
|
|
|
Player.reapplyAllSourceFiles();
|
2017-02-20 23:06:16 +01:00
|
|
|
initCompanies();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-05-15 02:14:13 +02:00
|
|
|
//Clear terminal
|
|
|
|
$("#terminal tr:not(:last)").remove();
|
|
|
|
postNetburnerText();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-06-02 07:34:57 +02:00
|
|
|
//Messages
|
|
|
|
initMessages();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-08-13 07:01:33 +02:00
|
|
|
//Gang, in BitNode 2
|
|
|
|
if (Player.bitNodeN == 2 && Player.inGang()) {
|
|
|
|
var faction = Factions[Player.gang.facName];
|
|
|
|
if (faction instanceof Faction) {
|
|
|
|
joinFaction(faction);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-08 17:51:48 +02:00
|
|
|
//Cancel Bladeburner action
|
|
|
|
if (Player.bladeburner instanceof Bladeburner) {
|
2018-06-13 06:16:23 +02:00
|
|
|
Player.bladeburner.prestige();
|
2018-06-08 17:51:48 +02:00
|
|
|
}
|
2018-05-02 19:38:11 +02:00
|
|
|
|
2017-10-25 21:47:47 +02:00
|
|
|
//BitNode 8: Ghost of Wall Street
|
2018-06-03 03:37:56 +02:00
|
|
|
if (Player.bitNodeN === 8) {Player.money = new Decimal(BitNode8StartingMoney);}
|
2017-10-25 21:47:47 +02:00
|
|
|
if (Player.bitNodeN === 8 || hasWallStreetSF) {
|
|
|
|
Player.hasWseAccount = true;
|
|
|
|
Player.hasTixApiAccess = true;
|
|
|
|
}
|
2018-08-27 07:23:04 +02:00
|
|
|
|
2018-08-09 01:04:40 +02:00
|
|
|
//Reset Stock market
|
|
|
|
if (Player.hasWseAccount) {
|
|
|
|
initStockMarket();
|
|
|
|
initSymbolToStockMap();
|
|
|
|
}
|
|
|
|
setStockMarketContentCreated(false);
|
|
|
|
var stockMarketList = document.getElementById("stock-market-list");
|
|
|
|
while(stockMarketList.firstChild) {
|
|
|
|
stockMarketList.removeChild(stockMarketList.firstChild);
|
|
|
|
}
|
2018-08-27 07:23:04 +02:00
|
|
|
var watchlist = document.getElementById("stock-market-watchlist-filter");
|
|
|
|
watchlist.value = ""; //Reset watchlist filter
|
2017-10-25 21:47:47 +02:00
|
|
|
|
2018-08-27 07:23:04 +02:00
|
|
|
//Load Terminal Screen
|
2017-07-22 00:54:55 +02:00
|
|
|
var mainMenu = document.getElementById("mainmenu-container");
|
|
|
|
mainMenu.style.visibility = "visible";
|
2017-09-13 16:22:22 +02:00
|
|
|
Terminal.resetTerminalInput();
|
2017-05-05 03:08:44 +02:00
|
|
|
Engine.loadTerminalContent();
|
2017-07-27 04:56:14 +02:00
|
|
|
|
2017-07-22 00:54:55 +02:00
|
|
|
//Red Pill
|
|
|
|
if (augmentationExists(AugmentationNames.TheRedPill) &&
|
|
|
|
Augmentations[AugmentationNames.TheRedPill].owned) {
|
|
|
|
var WorldDaemon = AllServers[SpecialServerIps[SpecialServerNames.WorldDaemon]];
|
|
|
|
var DaedalusServer = AllServers[SpecialServerIps[SpecialServerNames.DaedalusServer]];
|
|
|
|
if (WorldDaemon && DaedalusServer) {
|
|
|
|
WorldDaemon.serversOnNetwork.push(DaedalusServer.ip);
|
|
|
|
DaedalusServer.serversOnNetwork.push(WorldDaemon.ip);
|
|
|
|
}
|
|
|
|
}
|
2017-07-27 04:56:14 +02:00
|
|
|
}
|
2017-08-13 07:01:33 +02:00
|
|
|
|
|
|
|
|
|
|
|
//Prestige by destroying Bit Node and gaining a Source File
|
|
|
|
function prestigeSourceFile() {
|
|
|
|
initBitNodeMultipliers();
|
|
|
|
|
2017-08-30 19:44:29 +02:00
|
|
|
Player.prestigeSourceFile();
|
2018-02-24 23:55:06 +01:00
|
|
|
prestigeWorkerScripts(); //Delete all Worker Scripts objects
|
2017-08-13 07:01:33 +02:00
|
|
|
|
|
|
|
var homeComp = Player.getHomeComputer();
|
2017-08-30 19:44:29 +02:00
|
|
|
|
2017-08-13 07:01:33 +02:00
|
|
|
//Delete all servers except home computer
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeAllServers(); //Must be done before initForeignServers()
|
|
|
|
|
2017-08-13 07:01:33 +02:00
|
|
|
//Delete Special Server IPs
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeSpecialServerIps();
|
2017-08-13 07:01:33 +02:00
|
|
|
|
|
|
|
//Reset home computer (only the programs) and add to AllServers
|
2018-03-04 00:55:58 +01:00
|
|
|
AddToAllServers(homeComp);
|
2017-08-30 19:44:29 +02:00
|
|
|
prestigeHomeComputer(homeComp);
|
|
|
|
|
2018-03-04 00:55:58 +01:00
|
|
|
//Re-create foreign servers
|
|
|
|
initForeignServers();
|
|
|
|
|
2017-08-13 07:01:33 +02:00
|
|
|
var srcFile1Owned = false;
|
|
|
|
for (var i = 0; i < Player.sourceFiles.length; ++i) {
|
|
|
|
if (Player.sourceFiles[i].n == 1) {
|
|
|
|
srcFile1Owned = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (srcFile1Owned) {
|
2017-08-30 19:44:29 +02:00
|
|
|
homeComp.setMaxRam(32);
|
2017-08-13 07:01:33 +02:00
|
|
|
} else {
|
2017-08-30 19:44:29 +02:00
|
|
|
homeComp.setMaxRam(8);
|
2017-08-13 07:01:33 +02:00
|
|
|
}
|
2017-10-10 06:56:48 +02:00
|
|
|
homeComp.cpuCores = 1;
|
2017-08-30 19:44:29 +02:00
|
|
|
|
2017-08-13 07:01:33 +02:00
|
|
|
//Reset favor for Companies
|
|
|
|
for (var member in Companies) {
|
|
|
|
if (Companies.hasOwnProperty(member)) {
|
|
|
|
Companies[member].favor = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Reset favor for factions
|
|
|
|
for (var member in Factions) {
|
|
|
|
if (Factions.hasOwnProperty(member)) {
|
|
|
|
Factions[member].favor = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Stop a Terminal action if there is one
|
|
|
|
if (Engine._actionInProgress) {
|
|
|
|
Engine._actionInProgress = false;
|
|
|
|
Terminal.finishAction(true);
|
|
|
|
}
|
|
|
|
|
2017-08-15 22:22:46 +02:00
|
|
|
//Delete all Augmentations
|
|
|
|
for (var name in Augmentations) {
|
|
|
|
if (Augmentations.hasOwnProperty(name)) {
|
|
|
|
delete Augmentations[name];
|
|
|
|
}
|
|
|
|
}
|
2017-08-20 03:36:19 +02:00
|
|
|
|
2017-08-13 07:01:33 +02:00
|
|
|
//Re-initialize things - This will update any changes
|
|
|
|
initFactions(); //Factions must be initialized before augmentations
|
|
|
|
initAugmentations(); //Calls reapplyAllAugmentations() and resets Player multipliers
|
|
|
|
Player.reapplyAllSourceFiles();
|
|
|
|
initCompanies();
|
|
|
|
|
|
|
|
//Clear terminal
|
|
|
|
$("#terminal tr:not(:last)").remove();
|
|
|
|
postNetburnerText();
|
|
|
|
|
|
|
|
//Messages
|
|
|
|
initMessages();
|
|
|
|
|
|
|
|
var mainMenu = document.getElementById("mainmenu-container");
|
|
|
|
mainMenu.style.visibility = "visible";
|
2017-09-13 16:22:22 +02:00
|
|
|
Terminal.resetTerminalInput();
|
2017-08-13 07:01:33 +02:00
|
|
|
Engine.loadTerminalContent();
|
2017-09-15 16:06:59 +02:00
|
|
|
|
2017-11-09 02:55:21 +01:00
|
|
|
//Reinitialize Bit Node flags
|
2017-09-19 20:38:03 +02:00
|
|
|
initSingularitySFFlags();
|
|
|
|
|
2018-03-04 00:55:58 +01:00
|
|
|
//BitNode 3: Corporatocracy
|
2018-03-12 20:39:04 +01:00
|
|
|
if (Player.bitNodeN === 3) {
|
|
|
|
Player.money = new Decimal(150e9);
|
|
|
|
homeComp.messages.push("corporation-management-handbook.lit");
|
|
|
|
dialogBoxCreate("You received a copy of the Corporation Management Handbook on your home computer. " +
|
|
|
|
"Read it if you need help getting started with Corporations!");
|
|
|
|
}
|
2018-02-24 23:55:06 +01:00
|
|
|
|
2018-05-02 19:38:11 +02:00
|
|
|
//BitNode 6: Bladeburner
|
|
|
|
if (Player.bitNodeN === 6) {
|
|
|
|
var cinematicText = ["In the middle of the 21st century, OmniTek Incorporated advanced robot evolution " +
|
|
|
|
"with their Synthoids (synthetic androids), a being virtually identical to a human.",
|
|
|
|
"------",
|
|
|
|
"Their sixth-generation Synthoids, called MK-VI, were stronger, faster, and more " +
|
|
|
|
"intelligent than humans. Many argued that the MK-VI Synthoids were the first " +
|
|
|
|
"example of sentient AI.",
|
|
|
|
"------",
|
|
|
|
"Unfortunately, in 2070 a terrorist group called Ascendis Totalis hacked into OmniTek and " +
|
|
|
|
"uploaded a rogue AI into their Synthoid manufacturing facilities.",
|
|
|
|
"------",
|
|
|
|
"The MK-VI Synthoids infected by the rogue AI turned hostile toward humanity, initiating " +
|
|
|
|
"the deadliest conflict in human history. This dark chapter is now known as the Synthoid Uprising.",
|
|
|
|
"------",
|
|
|
|
"In the aftermath of the Uprising, further manufacturing of Synthoids with advanced AI " +
|
|
|
|
"was banned. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were " +
|
|
|
|
"allowed to continue their existence.",
|
|
|
|
"------",
|
|
|
|
"The intelligence community believes that not all of the rogue MK-VI Synthoids from the Uprising were " +
|
|
|
|
"found and destroyed, and that many of them are blending in as normal humans in society today. " +
|
|
|
|
"As a result, many nations have created Bladeburner divisions, special units that are tasked with " +
|
|
|
|
"investigating and dealing with Synthoid threats."];
|
|
|
|
writeCinematicText(cinematicText).then(function() {
|
|
|
|
var popupId = "bladeburner-bitnode-start-nsa-notification";
|
|
|
|
var txt = createElement("p", {
|
|
|
|
innerText:"Visit the National Security Agency (NSA) to apply for their Bladeburner " +
|
|
|
|
"division! You will need 100 of each combat stat before doing this."
|
|
|
|
})
|
|
|
|
var brEl = createElement("br");
|
|
|
|
var okBtn = createElement("a", {
|
|
|
|
class:"a-link-button", innerText:"Got it!", padding:"8px",
|
|
|
|
clickListener:()=>{
|
|
|
|
removeElementById(popupId);
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
createPopup(popupId, [txt, brEl, okBtn]);
|
|
|
|
}).catch(function(e) {
|
|
|
|
exceptionAlert(e);
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-06-03 03:37:56 +02:00
|
|
|
//BitNode 8: Ghost of Wall Street
|
|
|
|
if (Player.bitNodeN === 8) {Player.money = new Decimal(BitNode8StartingMoney);}
|
|
|
|
if (Player.bitNodeN === 8 || hasWallStreetSF) {
|
|
|
|
Player.hasWseAccount = true;
|
|
|
|
Player.hasTixApiAccess = true;
|
|
|
|
}
|
|
|
|
|
2018-08-09 01:04:40 +02:00
|
|
|
//Reset Stock market, gang, and corporation
|
|
|
|
if (Player.hasWseAccount) {
|
|
|
|
initStockMarket();
|
|
|
|
initSymbolToStockMap();
|
|
|
|
}
|
|
|
|
setStockMarketContentCreated(false);
|
|
|
|
var stockMarketList = document.getElementById("stock-market-list");
|
|
|
|
while(stockMarketList.firstChild) {
|
|
|
|
stockMarketList.removeChild(stockMarketList.firstChild);
|
|
|
|
}
|
|
|
|
|
2018-10-23 20:55:42 +02:00
|
|
|
if (Player.inGang()) { Player.gang.clearUI(); }
|
2018-08-09 01:04:40 +02:00
|
|
|
Player.gang = null;
|
|
|
|
Player.corporation = null;
|
|
|
|
Player.bladeburner = null;
|
|
|
|
|
2017-09-15 16:06:59 +02:00
|
|
|
//Gain int exp
|
|
|
|
Player.gainIntelligenceExp(5);
|
2017-08-13 07:01:33 +02:00
|
|
|
}
|
2017-08-30 19:44:29 +02:00
|
|
|
|
|
|
|
export {prestigeAugmentation, prestigeSourceFile};
|