mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-26 09:33:49 +01:00
Merge pull request #2485 from Ornedan/netscriptdelay-check-stop
Refactor netscriptDelay and script kill interaction
This commit is contained in:
commit
03f71bd5f4
@ -33,9 +33,9 @@ export class WorkerScript {
|
|||||||
delay: number | null = null;
|
delay: number | null = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the Promise resolve() function for when the script is "blocked" by an async op
|
* Holds the Promise reject() function while the script is "blocked" by an async op
|
||||||
*/
|
*/
|
||||||
delayResolve?: () => void;
|
delayReject?: (reason?: any) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores names of all functions that have logging disabled
|
* Stores names of all functions that have logging disabled
|
||||||
|
@ -138,8 +138,8 @@ function killNetscriptDelay(workerScript: WorkerScript): void {
|
|||||||
if (workerScript instanceof WorkerScript) {
|
if (workerScript instanceof WorkerScript) {
|
||||||
if (workerScript.delay) {
|
if (workerScript.delay) {
|
||||||
clearTimeout(workerScript.delay);
|
clearTimeout(workerScript.delay);
|
||||||
if (workerScript.delayResolve) {
|
if (workerScript.delayReject) {
|
||||||
workerScript.delayResolve();
|
workerScript.delayReject(workerScript);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,17 @@ import { GetServer } from "./Server/AllServers";
|
|||||||
import { WorkerScript } from "./Netscript/WorkerScript";
|
import { WorkerScript } from "./Netscript/WorkerScript";
|
||||||
|
|
||||||
export function netscriptDelay(time: number, workerScript: WorkerScript): Promise<void> {
|
export function netscriptDelay(time: number, workerScript: WorkerScript): Promise<void> {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve, reject) {
|
||||||
workerScript.delay = window.setTimeout(() => {
|
workerScript.delay = window.setTimeout(() => {
|
||||||
workerScript.delay = null;
|
workerScript.delay = null;
|
||||||
resolve();
|
workerScript.delayReject = undefined;
|
||||||
|
|
||||||
|
if (workerScript.env.stopFlag)
|
||||||
|
reject(workerScript);
|
||||||
|
else
|
||||||
|
resolve();
|
||||||
}, time);
|
}, time);
|
||||||
workerScript.delayResolve = resolve;
|
workerScript.delayReject = reject;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342,9 +342,6 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return netscriptDelay(hackingTime * 1000, workerScript).then(function () {
|
return netscriptDelay(hackingTime * 1000, workerScript).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
const hackChance = calculateHackingChance(server, Player);
|
const hackChance = calculateHackingChance(server, Player);
|
||||||
const rand = Math.random();
|
const rand = Math.random();
|
||||||
let expGainedOnSuccess = calculateHackingExpGain(server, Player) * threads;
|
let expGainedOnSuccess = calculateHackingExpGain(server, Player) * threads;
|
||||||
@ -615,9 +612,6 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
|||||||
)} (t=${numeralWrapper.formatThreads(threads)}).`,
|
)} (t=${numeralWrapper.formatThreads(threads)}).`,
|
||||||
);
|
);
|
||||||
return netscriptDelay(growTime * 1000, workerScript).then(function () {
|
return netscriptDelay(growTime * 1000, workerScript).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
const moneyBefore = server.moneyAvailable <= 0 ? 1 : server.moneyAvailable;
|
const moneyBefore = server.moneyAvailable <= 0 ? 1 : server.moneyAvailable;
|
||||||
processSingleServerGrowth(server, threads, Player, host.cpuCores);
|
processSingleServerGrowth(server, threads, Player, host.cpuCores);
|
||||||
const moneyAfter = server.moneyAvailable;
|
const moneyAfter = server.moneyAvailable;
|
||||||
@ -686,7 +680,6 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
|||||||
)} (t=${numeralWrapper.formatThreads(threads)})`,
|
)} (t=${numeralWrapper.formatThreads(threads)})`,
|
||||||
);
|
);
|
||||||
return netscriptDelay(weakenTime * 1000, workerScript).then(function () {
|
return netscriptDelay(weakenTime * 1000, workerScript).then(function () {
|
||||||
if (workerScript.env.stopFlag) return Promise.reject(workerScript);
|
|
||||||
const host = GetServer(workerScript.hostname);
|
const host = GetServer(workerScript.hostname);
|
||||||
if (host === null) {
|
if (host === null) {
|
||||||
workerScript.log("weaken", () => "Server is null, did it die?");
|
workerScript.log("weaken", () => "Server is null, did it die?");
|
||||||
|
@ -311,9 +311,6 @@ export function NetscriptCorporation(
|
|||||||
const job = helper.string("assignJob", "job", ajob);
|
const job = helper.string("assignJob", "job", ajob);
|
||||||
const employee = getEmployee(divisionName, cityName, employeeName);
|
const employee = getEmployee(divisionName, cityName, employeeName);
|
||||||
return netscriptDelay(1000, workerScript).then(function () {
|
return netscriptDelay(1000, workerScript).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
return Promise.resolve(AssignJob(employee, job));
|
return Promise.resolve(AssignJob(employee, job));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -344,9 +341,6 @@ export function NetscriptCorporation(
|
|||||||
(60 * 1000) / (player.hacking_speed_mult * calculateIntelligenceBonus(player.intelligence, 1)),
|
(60 * 1000) / (player.hacking_speed_mult * calculateIntelligenceBonus(player.intelligence, 1)),
|
||||||
workerScript,
|
workerScript,
|
||||||
).then(function () {
|
).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
return Promise.resolve(ThrowParty(corporation, office, costPerEmployee));
|
return Promise.resolve(ThrowParty(corporation, office, costPerEmployee));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -359,9 +353,6 @@ export function NetscriptCorporation(
|
|||||||
(60 * 1000) / (player.hacking_speed_mult * calculateIntelligenceBonus(player.intelligence, 1)),
|
(60 * 1000) / (player.hacking_speed_mult * calculateIntelligenceBonus(player.intelligence, 1)),
|
||||||
workerScript,
|
workerScript,
|
||||||
).then(function () {
|
).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
return Promise.resolve(BuyCoffee(corporation, getDivision(divisionName), getOffice(divisionName, cityName)));
|
return Promise.resolve(BuyCoffee(corporation, getDivision(divisionName), getOffice(divisionName, cityName)));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -611,9 +611,6 @@ export function NetscriptSingularity(
|
|||||||
);
|
);
|
||||||
|
|
||||||
return netscriptDelay(installTime, workerScript).then(function () {
|
return netscriptDelay(installTime, workerScript).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
workerScript.log("installBackdoor", () => `Successfully installed backdoor on '${server.hostname}'`);
|
workerScript.log("installBackdoor", () => `Successfully installed backdoor on '${server.hostname}'`);
|
||||||
|
|
||||||
server.backdoorInstalled = true;
|
server.backdoorInstalled = true;
|
||||||
|
@ -38,9 +38,6 @@ export function NetscriptStanek(player: IPlayer, workerScript: WorkerScript, hel
|
|||||||
if (!fragment) throw helper.makeRuntimeErrorMsg("stanek.charge", `No fragment with root (${rootX}, ${rootY}).`);
|
if (!fragment) throw helper.makeRuntimeErrorMsg("stanek.charge", `No fragment with root (${rootX}, ${rootY}).`);
|
||||||
const time = staneksGift.inBonus() ? 200 : 1000;
|
const time = staneksGift.inBonus() ? 200 : 1000;
|
||||||
return netscriptDelay(time, workerScript).then(function () {
|
return netscriptDelay(time, workerScript).then(function () {
|
||||||
if (workerScript.env.stopFlag) {
|
|
||||||
return Promise.reject(workerScript);
|
|
||||||
}
|
|
||||||
const charge = staneksGift.charge(player, fragment, workerScript.scriptRef.threads);
|
const charge = staneksGift.charge(player, fragment, workerScript.scriptRef.threads);
|
||||||
workerScript.log("stanek.charge", () => `Charged fragment for ${charge} charge.`);
|
workerScript.log("stanek.charge", () => `Charged fragment for ${charge} charge.`);
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
|
Loading…
Reference in New Issue
Block a user