diff --git a/src/PersonObjects/Sleeve/Work/SleeveBladeburnerWork.ts b/src/PersonObjects/Sleeve/Work/SleeveBladeburnerWork.ts index 6c13e850e..096b06990 100644 --- a/src/PersonObjects/Sleeve/Work/SleeveBladeburnerWork.ts +++ b/src/PersonObjects/Sleeve/Work/SleeveBladeburnerWork.ts @@ -17,6 +17,7 @@ export const isSleeveBladeburnerWork = (w: SleeveWorkClass | null): w is SleeveB export class SleeveBladeburnerWork extends SleeveWorkClass { type: SleeveWorkType.BLADEBURNER = SleeveWorkType.BLADEBURNER; + tasksCompleted = 0; cyclesWorked = 0; actionType: "General" | "Contracts"; actionName: string; @@ -69,6 +70,7 @@ export class SleeveBladeburnerWork extends SleeveWorkClass { if (this.actionType === "Contracts") { applySleeveGains(sleeve, scaleWorkStats(retValue, sleeve.shockBonus(), false)); } + this.tasksCompleted++; this.cyclesWorked -= this.cyclesNeeded(sleeve); // Resolve and reset nextCompletion promise const resolver = this.signalCompletion; @@ -82,6 +84,7 @@ export class SleeveBladeburnerWork extends SleeveWorkClass { type: SleeveWorkType.BLADEBURNER as "BLADEBURNER", actionType: this.actionType, actionName: this.actionName, + tasksCompleted: this.tasksCompleted, cyclesWorked: this.cyclesWorked, cyclesNeeded: this.cyclesNeeded(sleeve), nextCompletion: this.nextCompletion, diff --git a/src/PersonObjects/Sleeve/Work/SleeveCrimeWork.ts b/src/PersonObjects/Sleeve/Work/SleeveCrimeWork.ts index 4fbc9e7bf..18fba3e94 100644 --- a/src/PersonObjects/Sleeve/Work/SleeveCrimeWork.ts +++ b/src/PersonObjects/Sleeve/Work/SleeveCrimeWork.ts @@ -16,6 +16,7 @@ export const isSleeveCrimeWork = (w: SleeveWorkClass | null): w is SleeveCrimeWo export class SleeveCrimeWork extends SleeveWorkClass { type: SleeveWorkType.CRIME = SleeveWorkType.CRIME; crimeType: CrimeType; + tasksCompleted = 0; cyclesWorked = 0; constructor(crimeType?: CrimeType) { super(); @@ -47,6 +48,7 @@ export class SleeveCrimeWork extends SleeveWorkClass { Player.numPeopleKilled += crime.kills; } else gains.money = 0; applySleeveGains(sleeve, gains, success ? 1 : 0.25); + this.tasksCompleted++; this.cyclesWorked -= this.cyclesNeeded(); } } @@ -55,6 +57,7 @@ export class SleeveCrimeWork extends SleeveWorkClass { return { type: SleeveWorkType.CRIME as "CRIME", crimeType: this.crimeType, + tasksCompleted: this.tasksCompleted, cyclesWorked: this.cyclesWorked, cyclesNeeded: this.cyclesNeeded(), }; diff --git a/src/PersonObjects/Sleeve/ui/SleeveElem.tsx b/src/PersonObjects/Sleeve/ui/SleeveElem.tsx index 8f7e5e854..9c1595c3c 100644 --- a/src/PersonObjects/Sleeve/ui/SleeveElem.tsx +++ b/src/PersonObjects/Sleeve/ui/SleeveElem.tsx @@ -3,7 +3,7 @@ import React, { useState } from "react"; import { CrimeType, FactionWorkType } from "@enums"; import { CONSTANTS } from "../../../Constants"; import { Player } from "@player"; -import { formatPercent } from "../../../ui/formatNumber"; +import { formatPercent, formatInt } from "../../../ui/formatNumber"; import { ProgressBar } from "../../../ui/React/Progress"; import { Sleeve } from "../Sleeve"; import { MoreStatsModal } from "./MoreStatsModal"; @@ -31,15 +31,17 @@ function getWorkDescription(sleeve: Sleeve, progress: number): string { return "This sleeve is currently set to synchronize with the original consciousness. This causes the Sleeve's synchronization to increase."; case SleeveWorkType.BLADEBURNER: return ( - `This sleeve is currently attempting to perform ${work.actionName}.\n\n` + - `Progress: ${formatPercent(progress)}` + `This sleeve is currently attempting to perform ${work.actionName}.\n\nTasks Completed: ${formatInt( + work.tasksCompleted, + )}\n \n` + `Progress: ${formatPercent(progress)}` ); case SleeveWorkType.CRIME: { const crime = work.getCrime(); return ( `This sleeve is currently attempting ${crime.workName} (Success Rate: ${formatPercent( crime.successRate(sleeve), - )}).\n\n` + `Progress: ${formatPercent(progress)}` + )}).\n\nTasks Completed: ${formatInt(work.tasksCompleted)} + \n` + `Progress: ${formatPercent(progress)}` ); } case SleeveWorkType.FACTION: { diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 1035c87e9..953ca78d5 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -987,6 +987,7 @@ type SleeveBladeburnerTask = { cyclesWorked: number; cyclesNeeded: number; nextCompletion: Promise; + tasksCompleted: number; }; /** @public */ @@ -1005,6 +1006,7 @@ type SleeveCrimeTask = { crimeType: CrimeType | `${CrimeType}`; cyclesWorked: number; cyclesNeeded: number; + tasksCompleted: number; }; /** @public */ diff --git a/test/jest/__snapshots__/FullSave.test.ts.snap b/test/jest/__snapshots__/FullSave.test.ts.snap index 1f366f984..4c2161e2b 100644 --- a/test/jest/__snapshots__/FullSave.test.ts.snap +++ b/test/jest/__snapshots__/FullSave.test.ts.snap @@ -1347,6 +1347,7 @@ exports[`Check Save File Continuity PlayerSave continuity 1`] = ` "data": { "crimeType": "Homicide", "cyclesWorked": 0, + "tasksCompleted": 0, "type": "CRIME", }, },