bitburner-src/src/PersonObjects/Player/PlayerObjectServerMethods.ts

61 lines
2.0 KiB
TypeScript
Raw Normal View History

/**
* Server and HacknetServer-related methods for the Player class (PlayerObject)
*/
import { IPlayer } from "../IPlayer";
2019-04-04 02:08:11 +02:00
import { CONSTANTS } from "../../Constants";
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
2021-05-01 09:17:31 +02:00
import { Server } from "../../Server/Server";
import { HacknetServer } from "../../Hacknet/HacknetServer";
import {
AddToAllServers,
AllServers,
createUniqueRandomIp,
} from "../../Server/AllServers";
import { SpecialServerIps } from "../../Server/SpecialServerIps";
2019-04-04 02:08:11 +02:00
2021-05-01 09:17:31 +02:00
export function hasTorRouter(this: IPlayer): boolean {
2019-04-04 02:08:11 +02:00
return SpecialServerIps.hasOwnProperty("Darkweb Server");
}
2021-05-01 09:17:31 +02:00
export function getCurrentServer(this: IPlayer): Server | HacknetServer | null {
2019-04-04 02:08:11 +02:00
return AllServers[this.currentServer];
}
2021-05-01 09:17:31 +02:00
export function getHomeComputer(this: IPlayer): Server | HacknetServer | null {
2019-04-04 02:08:11 +02:00
return AllServers[this.homeComputer];
}
2021-05-01 09:17:31 +02:00
export function getUpgradeHomeRamCost(this: IPlayer): number {
2019-04-04 02:08:11 +02:00
//Calculate how many times ram has been upgraded (doubled)
const currentRam = this.getHomeComputer().maxRam;
const numUpgrades = Math.log2(currentRam);
//Calculate cost
//Have cost increase by some percentage each time RAM has been upgraded
const mult = Math.pow(1.58, numUpgrades);
2021-04-30 05:52:56 +02:00
const cost = currentRam * CONSTANTS.BaseCostFor1GBOfRamHome * mult * BitNodeMultipliers.HomeComputerRamCost;
2019-04-04 02:08:11 +02:00
return cost;
}
export function createHacknetServer(this: IPlayer): HacknetServer {
const numOwned = this.hacknetNodes.length;
const name = `hacknet-node-${numOwned}`;
const server = new HacknetServer({
adminRights: true,
hostname: name,
ip: createUniqueRandomIp(),
// player: this,
});
this.hacknetNodes.push(server.ip);
// Configure the HacknetServer to actually act as a Server
AddToAllServers(server);
const homeComputer = this.getHomeComputer();
homeComputer.serversOnNetwork.push(server.ip);
server.serversOnNetwork.push(homeComputer.ip);
return server;
}