bitburner-src/src/Hacking/netscriptCanHack.ts

56 lines
1.4 KiB
TypeScript
Raw Normal View History

/**
* Functions used to determine whether the target can be hacked (or grown/weakened).
* Meant to be used for Netscript implementation
*
* The returned status object's message should be used for logging in Netscript
*/
import { IReturnStatus } from "../types";
2021-09-05 01:09:30 +02:00
import { IPlayer } from "../PersonObjects/IPlayer";
import { Server } from "../Server/Server";
function baseCheck(server: Server, fnName: string): IReturnStatus {
2021-09-05 01:09:30 +02:00
const hostname = server.hostname;
if (!("requiredHackingSkill" in server)) {
return {
res: false,
msg: `Cannot ${fnName} ${hostname} server because it is a Hacknet Node`,
};
}
if (server.hasAdminRights === false) {
return {
res: false,
msg: `Cannot ${fnName} ${hostname} server because you do not have root access`,
};
}
return { res: true };
}
export function netscriptCanHack(server: Server, p: IPlayer): IReturnStatus {
2021-09-05 01:09:30 +02:00
const initialCheck = baseCheck(server, "hack");
if (!initialCheck.res) {
return initialCheck;
}
const s = server;
2021-11-05 22:12:52 +01:00
if (s.requiredHackingSkill > p.hacking) {
2021-09-05 01:09:30 +02:00
return {
res: false,
msg: `Cannot hack ${server.hostname} server because your hacking skill is not high enough`,
};
}
return { res: true };
}
export function netscriptCanGrow(server: Server): IReturnStatus {
2021-09-05 01:09:30 +02:00
return baseCheck(server, "grow");
}
export function netscriptCanWeaken(server: Server): IReturnStatus {
2021-09-05 01:09:30 +02:00
return baseCheck(server, "weaken");
}