diff --git a/src/Bladeburner/Bladeburner.tsx b/src/Bladeburner/Bladeburner.tsx index 771726395..451d7e119 100644 --- a/src/Bladeburner/Bladeburner.tsx +++ b/src/Bladeburner/Bladeburner.tsx @@ -287,6 +287,8 @@ export class Bladeburner implements IBladeburner { resetAction(): void { this.action = new ActionIdentifier({ type: ActionTypes.Idle }); + this.actionTimeCurrent = 0; + this.actionTimeToComplete = 0; } clearConsole(): void { diff --git a/src/Netscript/RamCostGenerator.ts b/src/Netscript/RamCostGenerator.ts index 8ce6b3c4c..620d67453 100644 --- a/src/Netscript/RamCostGenerator.ts +++ b/src/Netscript/RamCostGenerator.ts @@ -226,6 +226,7 @@ const bladeburner: IMap = { stopBladeburnerAction: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 2, getCurrentAction: RamCostConstants.ScriptBladeburnerApiBaseRamCost / 4, getActionTime: RamCostConstants.ScriptBladeburnerApiBaseRamCost, + getActionCurrentTime: RamCostConstants.ScriptBladeburnerApiBaseRamCost, getActionEstimatedSuccessChance: RamCostConstants.ScriptBladeburnerApiBaseRamCost, getActionRepGain: RamCostConstants.ScriptBladeburnerApiBaseRamCost, getActionCountRemaining: RamCostConstants.ScriptBladeburnerApiBaseRamCost, diff --git a/src/NetscriptFunctions/Bladeburner.ts b/src/NetscriptFunctions/Bladeburner.ts index e87490fa7..e96a4efbf 100644 --- a/src/NetscriptFunctions/Bladeburner.ts +++ b/src/NetscriptFunctions/Bladeburner.ts @@ -137,6 +137,19 @@ export function NetscriptBladeburner(player: IPlayer, workerScript: WorkerScript throw ctx.makeRuntimeErrorMsg(e); } }, + getActionCurrentTime: (ctx: NetscriptContext) => (): number => { + checkBladeburnerAccess(ctx); + const bladeburner = player.bladeburner; + if (bladeburner === null) throw new Error("Should not be called without Bladeburner"); + try { + const timecomputed = + Math.min(bladeburner.actionTimeCurrent + bladeburner.actionTimeOverflow, bladeburner.actionTimeToComplete) * + 1000; + return timecomputed; + } catch (e: any) { + throw ctx.makeRuntimeErrorMsg(e); + } + }, getActionEstimatedSuccessChance: (ctx: NetscriptContext) => (_type: unknown, _name: unknown): [number, number] => { diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 6dfc47d9b..f18cfdba3 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -2884,7 +2884,7 @@ export interface Bladeburner { * @remarks * RAM cost: 4 GB * - * Returns the number of seconds it takes to complete the specified action + * Returns the number of milliseconds it takes to complete the specified action * * @param type - Type of action. * @param name - Name of action. Must be an exact match. @@ -2892,6 +2892,17 @@ export interface Bladeburner { */ getActionTime(type: string, name: string): number; + /** + * Get the time elapsed on current action. + * @remarks + * RAM cost: 4 GB + * + * Returns the number of milliseconds already spent on the current action. + * + * @returns Number of milliseconds already spent on the current action. + */ + getActionCurrentTime(): number; + /** * Get estimate success chance of an action. * @remarks