mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-10 01:33:54 +01:00
Merge pull request #2470 from MartinFournier/fix/terminal-finishaction-server
Pass server to terminal actions that end later
This commit is contained in:
commit
67899a4901
@ -5,6 +5,7 @@ import { IPlayer } from "../PersonObjects/IPlayer";
|
||||
import { IRouter } from "../ui/Router";
|
||||
import { Settings } from "../Settings/Settings";
|
||||
import { formatTime } from "../utils/helpers/formatTime";
|
||||
import { BaseServer } from "../Server/BaseServer";
|
||||
|
||||
export class Output {
|
||||
text: string;
|
||||
@ -43,11 +44,13 @@ export class TTimer {
|
||||
time: number;
|
||||
timeLeft: number;
|
||||
action: "h" | "b" | "a" | "g" | "w";
|
||||
server?: BaseServer;
|
||||
|
||||
constructor(time: number, action: "h" | "b" | "a" | "g" | "w") {
|
||||
constructor(time: number, action: "h" | "b" | "a" | "g" | "w", server?: BaseServer) {
|
||||
this.time = time;
|
||||
this.timeLeft = time;
|
||||
this.action = action;
|
||||
this.server = server;
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,16 +77,16 @@ export interface ITerminal {
|
||||
warn(s: string): void;
|
||||
|
||||
clear(): void;
|
||||
startAnalyze(): void;
|
||||
startAnalyze(player: IPlayer): void;
|
||||
startBackdoor(player: IPlayer): void;
|
||||
startHack(player: IPlayer): void;
|
||||
startGrow(player: IPlayer): void;
|
||||
startWeaken(player: IPlayer): void;
|
||||
finishHack(router: IRouter, player: IPlayer, cancelled?: boolean): void;
|
||||
finishGrow(player: IPlayer, cancelled?: boolean): void;
|
||||
finishWeaken(player: IPlayer, cancelled?: boolean): void;
|
||||
finishBackdoor(router: IRouter, player: IPlayer, cancelled?: boolean): void;
|
||||
finishAnalyze(player: IPlayer, cancelled?: boolean): void;
|
||||
finishHack(router: IRouter, player: IPlayer, server: BaseServer, cancelled?: boolean): void;
|
||||
finishGrow(player: IPlayer, server: BaseServer, cancelled?: boolean): void;
|
||||
finishWeaken(player: IPlayer, server: BaseServer, cancelled?: boolean): void;
|
||||
finishBackdoor(router: IRouter, player: IPlayer, server: BaseServer, cancelled?: boolean): void;
|
||||
finishAnalyze(player: IPlayer, server: BaseServer, cancelled?: boolean): void;
|
||||
finishAction(router: IRouter, player: IPlayer, cancelled?: boolean): void;
|
||||
getFilepath(filename: string): string;
|
||||
getFile(player: IPlayer, filename: string): Script | TextFile | string | null;
|
||||
|
@ -137,7 +137,7 @@ export class Terminal implements ITerminal {
|
||||
return;
|
||||
}
|
||||
if (!(server instanceof Server)) throw new Error("server should be normal server");
|
||||
this.startAction(calculateHackingTime(server, player) / 4, "h");
|
||||
this.startAction(calculateHackingTime(server, player) / 4, "h", server);
|
||||
}
|
||||
|
||||
startGrow(player: IPlayer): void {
|
||||
@ -147,7 +147,7 @@ export class Terminal implements ITerminal {
|
||||
return;
|
||||
}
|
||||
if (!(server instanceof Server)) throw new Error("server should be normal server");
|
||||
this.startAction(calculateGrowTime(server, player) / 16, "g");
|
||||
this.startAction(calculateGrowTime(server, player) / 16, "g", server);
|
||||
}
|
||||
startWeaken(player: IPlayer): void {
|
||||
const server = player.getCurrentServer();
|
||||
@ -156,7 +156,7 @@ export class Terminal implements ITerminal {
|
||||
return;
|
||||
}
|
||||
if (!(server instanceof Server)) throw new Error("server should be normal server");
|
||||
this.startAction(calculateWeakenTime(server, player) / 16, "w");
|
||||
this.startAction(calculateWeakenTime(server, player) / 16, "w", server);
|
||||
}
|
||||
|
||||
startBackdoor(player: IPlayer): void {
|
||||
@ -167,22 +167,23 @@ export class Terminal implements ITerminal {
|
||||
return;
|
||||
}
|
||||
if (!(server instanceof Server)) throw new Error("server should be normal server");
|
||||
this.startAction(calculateHackingTime(server, player) / 4, "b");
|
||||
this.startAction(calculateHackingTime(server, player) / 4, "b", server);
|
||||
}
|
||||
|
||||
startAnalyze(): void {
|
||||
startAnalyze(player: IPlayer): void {
|
||||
this.print("Analyzing system...");
|
||||
this.startAction(1, "a");
|
||||
const server = player.getCurrentServer();
|
||||
this.startAction(1, "a", server);
|
||||
}
|
||||
|
||||
startAction(n: number, action: "h" | "b" | "a" | "g" | "w"): void {
|
||||
this.action = new TTimer(n, action);
|
||||
startAction(n: number, action: "h" | "b" | "a" | "g" | "w", server?: BaseServer): void {
|
||||
this.action = new TTimer(n, action, server);
|
||||
}
|
||||
|
||||
// Complete the hack/analyze command
|
||||
finishHack(router: IRouter, player: IPlayer, cancelled = false): void {
|
||||
finishHack(router: IRouter, player: IPlayer, server: BaseServer, cancelled = false): void {
|
||||
if (cancelled) return;
|
||||
const server = player.getCurrentServer();
|
||||
|
||||
if (server instanceof HacknetServer) {
|
||||
this.error("Cannot hack this kind of server");
|
||||
return;
|
||||
@ -218,25 +219,25 @@ export class Terminal implements ITerminal {
|
||||
const newSec = server.hackDifficulty;
|
||||
|
||||
this.print(
|
||||
`Hack successful! Gained ${numeralWrapper.formatMoney(moneyGained)} and ${numeralWrapper.formatExp(
|
||||
`Hack successful on '${server.hostname}'! Gained ${numeralWrapper.formatMoney(moneyGained)} and ${numeralWrapper.formatExp(
|
||||
expGainedOnSuccess,
|
||||
)} hacking exp`,
|
||||
);
|
||||
this.print(
|
||||
`Security increased from ${numeralWrapper.formatSecurity(oldSec)} to ${numeralWrapper.formatSecurity(newSec)}`,
|
||||
`Security increased on '${server.hostname}' from ${numeralWrapper.formatSecurity(oldSec)} to ${numeralWrapper.formatSecurity(newSec)}`,
|
||||
);
|
||||
} else {
|
||||
// Failure
|
||||
player.gainHackingExp(expGainedOnFailure);
|
||||
this.print(
|
||||
`Failed to hack ${server.hostname}. Gained ${numeralWrapper.formatExp(expGainedOnFailure)} hacking exp`,
|
||||
`Failed to hack '${server.hostname}'. Gained ${numeralWrapper.formatExp(expGainedOnFailure)} hacking exp`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
finishGrow(player: IPlayer, cancelled = false): void {
|
||||
finishGrow(player: IPlayer, server: BaseServer, cancelled = false): void {
|
||||
if (cancelled) return;
|
||||
const server = player.getCurrentServer();
|
||||
|
||||
if (server instanceof HacknetServer) {
|
||||
this.error("Cannot hack this kind of server");
|
||||
return;
|
||||
@ -253,13 +254,13 @@ export class Terminal implements ITerminal {
|
||||
)}. Gained ${numeralWrapper.formatExp(expGain)} hacking exp.`,
|
||||
);
|
||||
this.print(
|
||||
`Security increased from ${numeralWrapper.formatSecurity(oldSec)} to ${numeralWrapper.formatSecurity(newSec)}`,
|
||||
`Security increased on '${server.hostname}' from ${numeralWrapper.formatSecurity(oldSec)} to ${numeralWrapper.formatSecurity(newSec)}`,
|
||||
);
|
||||
}
|
||||
|
||||
finishWeaken(player: IPlayer, cancelled = false): void {
|
||||
finishWeaken(player: IPlayer, server: BaseServer, cancelled = false): void {
|
||||
if (cancelled) return;
|
||||
const server = player.getCurrentServer();
|
||||
|
||||
if (server instanceof HacknetServer) {
|
||||
this.error("Cannot hack this kind of server");
|
||||
return;
|
||||
@ -270,16 +271,15 @@ export class Terminal implements ITerminal {
|
||||
server.weaken(CONSTANTS.ServerWeakenAmount);
|
||||
const newSec = server.hackDifficulty;
|
||||
this.print(
|
||||
`Security decreased from ${numeralWrapper.formatSecurity(oldSec)} to ${numeralWrapper.formatSecurity(
|
||||
`Security decreased on '${server.hostname}' from ${numeralWrapper.formatSecurity(oldSec)} to ${numeralWrapper.formatSecurity(
|
||||
newSec,
|
||||
)} (min: ${numeralWrapper.formatSecurity(server.minDifficulty)})` +
|
||||
` and Gained ${numeralWrapper.formatExp(expGain)} hacking exp.`,
|
||||
);
|
||||
}
|
||||
|
||||
finishBackdoor(router: IRouter, player: IPlayer, cancelled = false): void {
|
||||
finishBackdoor(router: IRouter, player: IPlayer, server: BaseServer, cancelled = false): void {
|
||||
if (!cancelled) {
|
||||
const server = player.getCurrentServer();
|
||||
if (server instanceof HacknetServer) {
|
||||
this.error("Cannot hack this kind of server");
|
||||
return;
|
||||
@ -293,13 +293,12 @@ export class Terminal implements ITerminal {
|
||||
router.toBitVerse(false, false);
|
||||
return;
|
||||
}
|
||||
this.print("Backdoor successful!");
|
||||
this.print(`Backdoor on '${server.hostname}' successful!`);
|
||||
}
|
||||
}
|
||||
|
||||
finishAnalyze(player: IPlayer, cancelled = false): void {
|
||||
finishAnalyze(player: IPlayer, currServ: BaseServer, cancelled = false): void {
|
||||
if (!cancelled) {
|
||||
const currServ = player.getCurrentServer();
|
||||
const isHacknet = currServ instanceof HacknetServer;
|
||||
this.print(currServ.hostname + ": ");
|
||||
const org = currServ.organizationName;
|
||||
@ -338,18 +337,22 @@ export class Terminal implements ITerminal {
|
||||
if (!cancelled) throw new Error("Finish action called when there was no action");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.action.server) throw new Error("Missing action target server");
|
||||
|
||||
this.print(this.getProgressText());
|
||||
if (this.action.action === "h") {
|
||||
this.finishHack(router, player, cancelled);
|
||||
this.finishHack(router, player, this.action.server, cancelled);
|
||||
} else if (this.action.action === "g") {
|
||||
this.finishGrow(player, cancelled);
|
||||
this.finishGrow(player, this.action.server, cancelled);
|
||||
} else if (this.action.action === "w") {
|
||||
this.finishWeaken(player, cancelled);
|
||||
this.finishWeaken(player, this.action.server, cancelled);
|
||||
} else if (this.action.action === "b") {
|
||||
this.finishBackdoor(router, player, cancelled);
|
||||
this.finishBackdoor(router, player, this.action.server, cancelled);
|
||||
} else if (this.action.action === "a") {
|
||||
this.finishAnalyze(player, cancelled);
|
||||
this.finishAnalyze(player, this.action.server, cancelled);
|
||||
}
|
||||
|
||||
if (cancelled) {
|
||||
this.print("Cancelled");
|
||||
}
|
||||
|
@ -14,5 +14,5 @@ export function analyze(
|
||||
terminal.error("Incorrect usage of analyze command. Usage: analyze");
|
||||
return;
|
||||
}
|
||||
terminal.startAnalyze();
|
||||
terminal.startAnalyze(player);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user