mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-19 15:54:09 +02:00
178 lines
7.1 KiB
TypeScript
178 lines
7.1 KiB
TypeScript
import * as augmentationMethods from "./PlayerObjectAugmentationMethods";
|
|
import * as bladeburnerMethods from "./PlayerObjectBladeburnerMethods";
|
|
import * as corporationMethods from "./PlayerObjectCorporationMethods";
|
|
import * as gangMethods from "./PlayerObjectGangMethods";
|
|
import * as generalMethods from "./PlayerObjectGeneralMethods";
|
|
import * as serverMethods from "./PlayerObjectServerMethods";
|
|
import * as workMethods from "./PlayerObjectWorkMethods";
|
|
|
|
import { Sleeve } from "../Sleeve/Sleeve";
|
|
import { PlayerOwnedSourceFile } from "../../SourceFile/PlayerOwnedSourceFile";
|
|
import { Exploit } from "../../Exploits/Exploit";
|
|
|
|
import { LocationName } from "../../Locations/data/LocationNames";
|
|
import { Corporation } from "../../Corporation/Corporation";
|
|
import { Gang } from "../../Gang/Gang";
|
|
import { Bladeburner } from "../../Bladeburner/Bladeburner";
|
|
import { HacknetNode } from "../../Hacknet/HacknetNode";
|
|
|
|
import { HashManager } from "../../Hacknet/HashManager";
|
|
|
|
import { MoneySourceTracker } from "../../utils/MoneySourceTracker";
|
|
import { Reviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../../utils/JSONReviver";
|
|
import { PlayerAchievement } from "../../Achievements/Achievements";
|
|
import { cyrb53 } from "../../utils/StringHelperFunctions";
|
|
import { getRandomInt } from "../../utils/helpers/getRandomInt";
|
|
import { CONSTANTS } from "../../Constants";
|
|
import { Work } from "src/Work/Work";
|
|
import { Person } from "../Person";
|
|
|
|
export class PlayerObject extends Person {
|
|
// Player-specific properties
|
|
bitNodeN = 1; //current bitnode
|
|
corporation: Corporation | null = null;
|
|
gang: Gang | null = null;
|
|
bladeburner: Bladeburner | null = null;
|
|
currentServer = "";
|
|
factions: string[] = [];
|
|
factionInvitations: string[] = [];
|
|
hacknetNodes: (HacknetNode | string)[] = []; // HacknetNode object or hostname of Hacknet Server
|
|
has4SData = false;
|
|
has4SDataTixApi = false;
|
|
hashManager = new HashManager();
|
|
hasTixApiAccess = false;
|
|
hasWseAccount = false;
|
|
jobs: Record<string, string> = {};
|
|
karma = 0;
|
|
numPeopleKilled = 0;
|
|
location = LocationName.TravelAgency;
|
|
money = 1000 + CONSTANTS.Donations;
|
|
moneySourceA = new MoneySourceTracker();
|
|
moneySourceB = new MoneySourceTracker();
|
|
playtimeSinceLastAug = 0;
|
|
playtimeSinceLastBitnode = 0;
|
|
purchasedServers: string[] = [];
|
|
scriptProdSinceLastAug = 0;
|
|
sleeves: Sleeve[] = [];
|
|
sleevesFromCovenant = 0;
|
|
sourceFiles: PlayerOwnedSourceFile[] = [];
|
|
exploits: Exploit[] = [];
|
|
achievements: PlayerAchievement[] = [];
|
|
terminalCommandHistory: string[] = [];
|
|
identifier: string;
|
|
lastUpdate = 0;
|
|
lastSave = 0;
|
|
totalPlaytime = 0;
|
|
|
|
currentWork: Work | null = null;
|
|
focus = false;
|
|
|
|
entropy = 0;
|
|
|
|
// Player-specific methods
|
|
init = generalMethods.init;
|
|
startWork = workMethods.startWork;
|
|
processWork = workMethods.processWork;
|
|
finishWork = workMethods.finishWork;
|
|
applyForSoftwareJob = generalMethods.applyForSoftwareJob;
|
|
applyForSoftwareConsultantJob = generalMethods.applyForSoftwareConsultantJob;
|
|
applyForItJob = generalMethods.applyForItJob;
|
|
applyForSecurityEngineerJob = generalMethods.applyForSecurityEngineerJob;
|
|
applyForNetworkEngineerJob = generalMethods.applyForNetworkEngineerJob;
|
|
applyForBusinessJob = generalMethods.applyForBusinessJob;
|
|
applyForBusinessConsultantJob = generalMethods.applyForBusinessConsultantJob;
|
|
applyForSecurityJob = generalMethods.applyForSecurityJob;
|
|
applyForAgentJob = generalMethods.applyForAgentJob;
|
|
applyForEmployeeJob = generalMethods.applyForEmployeeJob;
|
|
applyForPartTimeEmployeeJob = generalMethods.applyForPartTimeEmployeeJob;
|
|
applyForWaiterJob = generalMethods.applyForWaiterJob;
|
|
applyForPartTimeWaiterJob = generalMethods.applyForPartTimeWaiterJob;
|
|
applyForJob = generalMethods.applyForJob;
|
|
canAccessBladeburner = bladeburnerMethods.canAccessBladeburner;
|
|
canAccessCorporation = corporationMethods.canAccessCorporation;
|
|
canAccessGang = gangMethods.canAccessGang;
|
|
canAccessGrafting = generalMethods.canAccessGrafting;
|
|
canAfford = generalMethods.canAfford;
|
|
gainMoney = generalMethods.gainMoney;
|
|
getCurrentServer = serverMethods.getCurrentServer;
|
|
getGangFaction = gangMethods.getGangFaction;
|
|
getGangName = gangMethods.getGangName;
|
|
getHomeComputer = serverMethods.getHomeComputer;
|
|
getNextCompanyPosition = generalMethods.getNextCompanyPosition;
|
|
getUpgradeHomeRamCost = serverMethods.getUpgradeHomeRamCost;
|
|
getUpgradeHomeCoresCost = serverMethods.getUpgradeHomeCoresCost;
|
|
gotoLocation = generalMethods.gotoLocation;
|
|
hasCorporation = corporationMethods.hasCorporation;
|
|
hasGangWith = gangMethods.hasGangWith;
|
|
hasTorRouter = serverMethods.hasTorRouter;
|
|
hasProgram = generalMethods.hasProgram;
|
|
inBladeburner = bladeburnerMethods.inBladeburner;
|
|
inGang = gangMethods.inGang;
|
|
isAwareOfGang = gangMethods.isAwareOfGang;
|
|
isQualified = generalMethods.isQualified;
|
|
loseMoney = generalMethods.loseMoney;
|
|
reapplyAllAugmentations = generalMethods.reapplyAllAugmentations;
|
|
reapplyAllSourceFiles = generalMethods.reapplyAllSourceFiles;
|
|
recordMoneySource = generalMethods.recordMoneySource;
|
|
setMoney = generalMethods.setMoney;
|
|
startBladeburner = bladeburnerMethods.startBladeburner;
|
|
startCorporation = corporationMethods.startCorporation;
|
|
startFocusing = generalMethods.startFocusing;
|
|
startGang = gangMethods.startGang;
|
|
takeDamage = generalMethods.takeDamage;
|
|
travel = generalMethods.travel;
|
|
giveExploit = generalMethods.giveExploit;
|
|
giveAchievement = generalMethods.giveAchievement;
|
|
getCasinoWinnings = generalMethods.getCasinoWinnings;
|
|
quitJob = generalMethods.quitJob;
|
|
hasJob = generalMethods.hasJob;
|
|
createHacknetServer = serverMethods.createHacknetServer;
|
|
queueAugmentation = generalMethods.queueAugmentation;
|
|
receiveInvite = generalMethods.receiveInvite;
|
|
gainCodingContractReward = generalMethods.gainCodingContractReward;
|
|
stopFocusing = generalMethods.stopFocusing;
|
|
prestigeAugmentation = generalMethods.prestigeAugmentation;
|
|
prestigeSourceFile = generalMethods.prestigeSourceFile;
|
|
calculateSkillProgress = generalMethods.calculateSkillProgress;
|
|
hospitalize = generalMethods.hospitalize;
|
|
checkForFactionInvitations = generalMethods.checkForFactionInvitations;
|
|
setBitNodeNumber = generalMethods.setBitNodeNumber;
|
|
canAccessCotMG = generalMethods.canAccessCotMG;
|
|
sourceFileLvl = generalMethods.sourceFileLvl;
|
|
applyEntropy = augmentationMethods.applyEntropy;
|
|
focusPenalty = generalMethods.focusPenalty;
|
|
|
|
constructor() {
|
|
super();
|
|
// Let's get a hash of some semi-random stuff so we have something unique.
|
|
this.identifier = cyrb53(
|
|
"I-" +
|
|
new Date().getTime() +
|
|
navigator.userAgent +
|
|
window.innerWidth +
|
|
window.innerHeight +
|
|
getRandomInt(100, 999),
|
|
);
|
|
}
|
|
|
|
whoAmI(): string {
|
|
return "Player";
|
|
}
|
|
|
|
/**
|
|
* Serialize the current object to a JSON save state.
|
|
*/
|
|
toJSON(): IReviverValue {
|
|
return Generic_toJSON("PlayerObject", this);
|
|
}
|
|
|
|
/**
|
|
* Initiatizes a PlayerObject object from a JSON save state.
|
|
*/
|
|
static fromJSON(value: IReviverValue): PlayerObject {
|
|
return Generic_fromJSON(PlayerObject, value.data);
|
|
}
|
|
}
|
|
|
|
Reviver.constructors.PlayerObject = PlayerObject;
|