28 lines
1.0 KiB
JavaScript
28 lines
1.0 KiB
JavaScript
/*
|
|
Workers are mostly the same, aside from uncommented portions allowing the hack and grow workers to report.
|
|
I've also generally commented out the terminal logging, as it gets rather laggy when there's a lot of scripts
|
|
writing to terminal.
|
|
*/
|
|
|
|
/** @param {NS} ns */
|
|
export async function main(ns) {
|
|
const job = JSON.parse(ns.args[0]);
|
|
|
|
let delay = job.end - job.time - Date.now();
|
|
if (delay < 0) {
|
|
// We write back to the controller if jobs are delayed so that it can adjust the other jobs to match.
|
|
ns.tprint(`WARN: Batch ${job.batch} ${job.type} was ${-delay}ms late. (${job.end})\n`);
|
|
ns.writePort(ns.pid, -delay);
|
|
delay = 0;
|
|
} else {
|
|
ns.writePort(ns.pid, 0);
|
|
}
|
|
await ns.weaken(job.target, { additionalMsec: delay });
|
|
const end = Date.now();
|
|
|
|
// Write back to let the controller know that we're done.
|
|
ns.atExit(() => {
|
|
if (job.report) ns.writePort(job.port, job.type + job.server);
|
|
// ns.tprint(`Batch ${job.batch}: ${job.type} finished at ${end.toString().slice(-6)}/${Math.round(job.end).toString().slice(-6)}\n`);
|
|
});
|
|
} |