build part pr

This commit is contained in:
Olivier Gagnon
2021-11-20 15:01:04 -05:00
parent 7b3369223d
commit f035457efc
4 changed files with 36 additions and 31 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -11,11 +11,14 @@ export function NetscriptCodingContract(
workerScript: WorkerScript, workerScript: WorkerScript,
helper: INetscriptHelper, helper: INetscriptHelper,
): ICodingContract { ): ICodingContract {
const getCodingContract = function (func: any, ip: any, fn: any): CodingContract { const getCodingContract = function (func: any, hostname: any, filename: any): CodingContract {
const server = helper.getServer(ip, func); const server = helper.getServer(hostname, func);
const contract = server.getContract(fn); const contract = server.getContract(filename);
if (contract == null) { if (contract == null) {
throw helper.makeRuntimeErrorMsg(`codingcontract.${func}`, `Cannot find contract '${fn}' on server '${ip}'`); throw helper.makeRuntimeErrorMsg(
`codingcontract.${func}`,
`Cannot find contract '${filename}' on server '${hostname}'`,
);
} }
return contract; return contract;
@ -24,12 +27,12 @@ export function NetscriptCodingContract(
return { return {
attempt: function ( attempt: function (
answer: any, answer: any,
fn: any, filename: any,
ip: any = workerScript.hostname, hostname: any = workerScript.hostname,
{ returnReward }: any = {}, { returnReward }: any = {},
): boolean | string { ): boolean | string {
helper.updateDynamicRam("attempt", getRamCost("codingcontract", "attempt")); helper.updateDynamicRam("attempt", getRamCost("codingcontract", "attempt"));
const contract = getCodingContract("attempt", ip, fn); const contract = getCodingContract("attempt", hostname, filename);
// Convert answer to string. If the answer is a 2D array, then we have to // Convert answer to string. If the answer is a 2D array, then we have to
// manually add brackets for the inner arrays // manually add brackets for the inner arrays
@ -47,35 +50,37 @@ export function NetscriptCodingContract(
const creward = contract.reward; const creward = contract.reward;
if (creward === null) throw new Error("Somehow solved a contract that didn't have a reward"); if (creward === null) throw new Error("Somehow solved a contract that didn't have a reward");
const serv = helper.getServer(ip, "codingcontract.attempt"); const serv = helper.getServer(hostname, "codingcontract.attempt");
if (contract.isSolution(answer)) { if (contract.isSolution(answer)) {
const reward = player.gainCodingContractReward(creward, contract.getDifficulty()); const reward = player.gainCodingContractReward(creward, contract.getDifficulty());
workerScript.log("attempt", `Successfully completed Coding Contract '${fn}'. Reward: ${reward}`); workerScript.log("attempt", `Successfully completed Coding Contract '${filename}'. Reward: ${reward}`);
serv.removeContract(fn); serv.removeContract(filename);
return returnReward ? reward : true; return returnReward ? reward : true;
} else { } else {
++contract.tries; ++contract.tries;
if (contract.tries >= contract.getMaxNumTries()) { if (contract.tries >= contract.getMaxNumTries()) {
workerScript.log("attempt", `Coding Contract attempt '${fn}' failed. Contract is now self-destructing`); workerScript.log("attempt", `Coding Contract attempt '${filename}' failed. Contract is now self-destructing`);
serv.removeContract(fn); serv.removeContract(filename);
} else { } else {
workerScript.log( workerScript.log(
"attempt", "attempt",
`Coding Contract attempt '${fn}' failed. ${contract.getMaxNumTries() - contract.tries} attempts remaining.`, `Coding Contract attempt '${filename}' failed. ${
contract.getMaxNumTries() - contract.tries
} attempts remaining.`,
); );
} }
return returnReward ? "" : false; return returnReward ? "" : false;
} }
}, },
getContractType: function (fn: any, ip: any = workerScript.hostname): string { getContractType: function (filename: any, hostname: any = workerScript.hostname): string {
helper.updateDynamicRam("getContractType", getRamCost("codingcontract", "getContractType")); helper.updateDynamicRam("getContractType", getRamCost("codingcontract", "getContractType"));
const contract = getCodingContract("getContractType", ip, fn); const contract = getCodingContract("getContractType", hostname, filename);
return contract.getType(); return contract.getType();
}, },
getData: function (fn: any, ip: any = workerScript.hostname): any { getData: function (filename: any, hostname: any = workerScript.hostname): any {
helper.updateDynamicRam("getData", getRamCost("codingcontract", "getData")); helper.updateDynamicRam("getData", getRamCost("codingcontract", "getData"));
const contract = getCodingContract("getData", ip, fn); const contract = getCodingContract("getData", hostname, filename);
const data = contract.getData(); const data = contract.getData();
if (data.constructor === Array) { if (data.constructor === Array) {
// For two dimensional arrays, we have to copy the internal arrays using // For two dimensional arrays, we have to copy the internal arrays using
@ -93,14 +98,14 @@ export function NetscriptCodingContract(
return data; return data;
} }
}, },
getDescription: function (fn: any, ip: any = workerScript.hostname): string { getDescription: function (filename: any, hostname: any = workerScript.hostname): string {
helper.updateDynamicRam("getDescription", getRamCost("codingcontract", "getDescription")); helper.updateDynamicRam("getDescription", getRamCost("codingcontract", "getDescription"));
const contract = getCodingContract("getDescription", ip, fn); const contract = getCodingContract("getDescription", hostname, filename);
return contract.getDescription(); return contract.getDescription();
}, },
getNumTriesRemaining: function (fn: any, ip: any = workerScript.hostname): number { getNumTriesRemaining: function (filename: any, hostname: any = workerScript.hostname): number {
helper.updateDynamicRam("getNumTriesRemaining", getRamCost("codingcontract", "getNumTriesRemaining")); helper.updateDynamicRam("getNumTriesRemaining", getRamCost("codingcontract", "getNumTriesRemaining"));
const contract = getCodingContract("getNumTriesRemaining", ip, fn); const contract = getCodingContract("getNumTriesRemaining", hostname, filename);
return contract.getMaxNumTries() - contract.tries; return contract.getMaxNumTries() - contract.tries;
}, },
}; };

View File

@ -2799,7 +2799,7 @@ export interface CodingContract {
* @param opts - Optional parameters for configuring function behavior. * @param opts - Optional parameters for configuring function behavior.
* @returns True if the solution was correct, false otherwise. If the returnReward option is configured, then the function will instead return a string. If the contract is successfully solved, the string will contain a description of the contracts reward. Otherwise, it will be an empty string. * @returns True if the solution was correct, false otherwise. If the returnReward option is configured, then the function will instead return a string. If the contract is successfully solved, the string will contain a description of the contracts reward. Otherwise, it will be an empty string.
*/ */
attempt(answer: string[] | number, fn: string, host?: string, opts?: CodingAttemptOptions): boolean | string; attempt(answer: string[] | number, filename: string, host?: string, opts?: CodingAttemptOptions): boolean | string;
/** /**
* Get the type of a coding contract. * Get the type of a coding contract.
@ -2813,7 +2813,7 @@ export interface CodingContract {
* @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided. * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.
* @returns Name describing the type of problem posed by the Coding Contract. * @returns Name describing the type of problem posed by the Coding Contract.
*/ */
getContractType(fn: string, host?: string): string; getContractType(filename: string, host?: string): string;
/** /**
* Get the description. * Get the description.
@ -2826,7 +2826,7 @@ export interface CodingContract {
* @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided. * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.
* @returns Contracts text description. * @returns Contracts text description.
*/ */
getDescription(fn: string, host?: string): string; getDescription(filename: string, host?: string): string;
/** /**
* Get the input data. * Get the input data.
@ -2837,11 +2837,11 @@ export interface CodingContract {
* Note that this is not the same as the contracts description. * Note that this is not the same as the contracts description.
* This is just the data that the contract wants you to act on in order to solve * This is just the data that the contract wants you to act on in order to solve
* *
* @param fn - Filename of the contract. * @param filename - Filename of the contract.
* @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided. * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.
* @returns The specified contracts data; * @returns The specified contracts data;
*/ */
getData(fn: string, host?: string): string; getData(filename: string, host?: string): string;
/** /**
* Get the number of attempt remaining. * Get the number of attempt remaining.
@ -2854,7 +2854,7 @@ export interface CodingContract {
* @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided. * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.
* @returns How many attempts are remaining for the contract; * @returns How many attempts are remaining for the contract;
*/ */
getNumTriesRemaining(fn: string, host?: string): number; getNumTriesRemaining(filename: string, host?: string): number;
} }
/** /**
@ -4416,7 +4416,7 @@ export interface NS extends Singularity {
* RAM cost: 0.3 GB * RAM cost: 0.3 GB
* @returns info about a running script * @returns info about a running script
*/ */
getRunningScript(fn: string | number, hostname: string, ...args: (string | number)[]): RunningScript; getRunningScript(filename: string | number, hostname: string, ...args: (string | number)[]): RunningScript;
/** /**
* Get cost of purchasing a server. * Get cost of purchasing a server.