bitburner-src/src/Prestige.js

260 lines
8.5 KiB
JavaScript
Raw Normal View History

import {deleteActiveScriptsItem} from "./ActiveScriptsUI.js";
import {Augmentations, augmentationExists,
initAugmentations, AugmentationNames} from "./Augmentations.js";
import {initBitNodeMultipliers} from "./BitNode.js";
import {Companies, Company, initCompanies} from "./Company.js";
import {Programs} from "./CreateProgram.js";
import {Engine} from "./engine.js";
import {Factions, Faction, initFactions,
joinFaction} from "./Faction.js";
import {Locations} from "./Location.js";
import {initMessages, Messages, Message} from "./Message.js";
import {initSingularitySFFlags, hasWallStreetSF}from "./NetscriptFunctions.js";
import {WorkerScript, workerScripts,
prestigeWorkerScripts} from "./NetscriptWorker.js";
import {Player} from "./Player.js";
import {AllServers, AddToAllServers,
initForeignServers, Server,
prestigeAllServers,
prestigeHomeComputer} from "./Server.js";
import {SpecialServerIps, SpecialServerIpsMap,
prestigeSpecialServerIps,
SpecialServerNames} from "./SpecialServerIps.js";
import {initStockMarket, initSymbolToStockMap,
2017-08-31 19:19:28 +02:00
stockMarketContentCreated,
setStockMarketContentCreated} from "./StockMarket.js";
import {Terminal, postNetburnerText} from "./Terminal.js";
import Decimal from '../utils/decimal.js';
import {dialogBoxCreate} from "../utils/DialogBox.js";
2017-02-20 23:06:16 +01:00
//Prestige by purchasing augmentation
function prestigeAugmentation() {
2017-08-13 07:01:33 +02:00
initBitNodeMultipliers();
Player.prestigeAugmentation();
//Delete all Worker Scripts objects
prestigeWorkerScripts();
var homeComp = Player.getHomeComputer();
//Delete all servers except home computer
prestigeAllServers();
//Delete Special Server IPs
prestigeSpecialServerIps(); //Must be done before initForeignServers()
//Reset home computer (only the programs) and add to AllServers
prestigeHomeComputer(homeComp);
if (augmentationExists(AugmentationNames.Neurolink) &&
Augmentations[AugmentationNames.Neurolink].owned) {
homeComp.programs.push(Programs.FTPCrackProgram);
homeComp.programs.push(Programs.RelaySMTPProgram);
}
if (augmentationExists(AugmentationNames.CashRoot) &&
Augmentations[AugmentationNames.CashRoot].owned) {
Player.setMoney(new Decimal(1000000));
homeComp.programs.push(Programs.BruteSSHProgram);
}
AddToAllServers(homeComp);
//Re-create foreign servers
initForeignServers();
//Darkweb is purchase-able
document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button");
//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)) {
Companies[member].gainFavor();
2017-05-10 22:21:15 +02:00
}
2017-02-20 23:06:16 +01: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)) {
Factions[member].gainFavor();
2017-05-10 22:21:15 +02:00
}
2017-02-20 23:06:16 +01:00
}
//Stop a Terminal action if there is onerror
if (Engine._actionInProgress) {
Engine._actionInProgress = false;
Terminal.finishAction(true);
}
//Re-initialize things - This will update any changes
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();
//Clear terminal
$("#terminal tr:not(:last)").remove();
postNetburnerText();
//Messages
initMessages();
2017-07-22 00:54:55 +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);
}
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);
}
}
2017-12-02 04:50:08 +01:00
//BitNode 3: Corporatocracy
if (Player.bitNodeN === 3) {Player.money = new Decimal(150e9);}
//BitNode 8: Ghost of Wall Street
2017-12-02 04:50:08 +01:00
if (Player.bitNodeN === 8) {Player.money = new Decimal(100e6);}
if (Player.bitNodeN === 8 || hasWallStreetSF) {
Player.hasWseAccount = true;
Player.hasTixApiAccess = true;
}
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();
Engine.loadTerminalContent();
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-08-13 07:01:33 +02:00
//Prestige by destroying Bit Node and gaining a Source File
function prestigeSourceFile() {
initBitNodeMultipliers();
Player.prestigeSourceFile();
prestigeWorkerScripts(); //Delete all Worker Scripts objects
2017-08-13 07:01:33 +02:00
var homeComp = Player.getHomeComputer();
2017-08-13 07:01:33 +02:00
//Delete all servers except home computer
prestigeAllServers(); //Must be done before initForeignServers()
2017-08-13 07:01:33 +02:00
//Delete Special Server IPs
prestigeSpecialServerIps();
2017-08-13 07:01:33 +02:00
//Reset home computer (only the programs) and add to AllServers
prestigeHomeComputer(homeComp);
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) {
homeComp.setMaxRam(32);
2017-08-13 07:01:33 +02:00
} else {
homeComp.setMaxRam(8);
2017-08-13 07:01:33 +02:00
}
2017-10-10 06:56:48 +02:00
homeComp.cpuCores = 1;
2017-08-13 07:01:33 +02:00
AddToAllServers(homeComp);
//Re-create foreign servers
initForeignServers();
//Darkweb is purchase-able
document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button");
//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);
}
//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
//Reinitialize Bit Node flags
2017-09-19 20:38:03 +02:00
initSingularitySFFlags();
//Reset Stock market, gang, and corporation
if (Player.hasWseAccount) {
initStockMarket();
initSymbolToStockMap();
2017-12-02 04:50:08 +01:00
}
setStockMarketContentCreated(false);
var stockMarketList = document.getElementById("stock-market-list");
while(stockMarketList.firstChild) {
stockMarketList.removeChild(stockMarketList.firstChild);
}
Player.gang = null;
Player.corporation = null;
//BitNode 3, get Handbook .lit file
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!");
2017-09-15 16:06:59 +02:00
//Gain int exp
Player.gainIntelligenceExp(5);
2017-08-13 07:01:33 +02:00
}
export {prestigeAugmentation, prestigeSourceFile};