diff --git a/markdown/bitburner.player.md b/markdown/bitburner.player.md index 7e11ff83d..1334ad1ae 100644 --- a/markdown/bitburner.player.md +++ b/markdown/bitburner.player.md @@ -23,7 +23,5 @@ interface Player extends Person | [location](./bitburner.player.location.md) | | string | | | [money](./bitburner.player.money.md) | | number | | | [numPeopleKilled](./bitburner.player.numpeoplekilled.md) | | number | | -| [playtimeSinceLastAug](./bitburner.player.playtimesincelastaug.md) | | number | | -| [playtimeSinceLastBitnode](./bitburner.player.playtimesincelastbitnode.md) | | number | | | [totalPlaytime](./bitburner.player.totalplaytime.md) | | number | | diff --git a/markdown/bitburner.player.playtimesincelastaug.md b/markdown/bitburner.player.playtimesincelastaug.md deleted file mode 100644 index 30aa57c14..000000000 --- a/markdown/bitburner.player.playtimesincelastaug.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [bitburner](./bitburner.md) > [Player](./bitburner.player.md) > [playtimeSinceLastAug](./bitburner.player.playtimesincelastaug.md) - -## Player.playtimeSinceLastAug property - -**Signature:** - -```typescript -playtimeSinceLastAug: number; -``` diff --git a/markdown/bitburner.player.playtimesincelastbitnode.md b/markdown/bitburner.player.playtimesincelastbitnode.md deleted file mode 100644 index da28bf946..000000000 --- a/markdown/bitburner.player.playtimesincelastbitnode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [bitburner](./bitburner.md) > [Player](./bitburner.player.md) > [playtimeSinceLastBitnode](./bitburner.player.playtimesincelastbitnode.md) - -## Player.playtimeSinceLastBitnode property - -**Signature:** - -```typescript -playtimeSinceLastBitnode: number; -``` diff --git a/markdown/bitburner.singularity.getlastaugreset.md b/markdown/bitburner.singularity.getlastaugreset.md new file mode 100644 index 000000000..4d8ed1779 --- /dev/null +++ b/markdown/bitburner.singularity.getlastaugreset.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [Singularity](./bitburner.singularity.md) > [getLastAugReset](./bitburner.singularity.getlastaugreset.md) + +## Singularity.getLastAugReset() method + +Get the last timestamp from when you installed augmentations. + +**Signature:** + +```typescript +getLastAugReset(): number; +``` +**Returns:** + +number + +The timestamp in milliseconds from your last augmentation install. + +## Remarks + +RAM cost: 0.5 GB \* 16/4/1 + diff --git a/markdown/bitburner.singularity.getlastnodereset.md b/markdown/bitburner.singularity.getlastnodereset.md new file mode 100644 index 000000000..21d094b96 --- /dev/null +++ b/markdown/bitburner.singularity.getlastnodereset.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [Singularity](./bitburner.singularity.md) > [getLastNodeReset](./bitburner.singularity.getlastnodereset.md) + +## Singularity.getLastNodeReset() method + +Get the last timestamp from when you finished a bitnode. + +**Signature:** + +```typescript +getLastNodeReset(): number; +``` +**Returns:** + +number + +The timestamp in milliseconds from your last bitnode finish. + +## Remarks + +RAM cost: 0.5 GB \* 16/4/1 + diff --git a/markdown/bitburner.singularity.md b/markdown/bitburner.singularity.md index adf1e26dc..322fea368 100644 --- a/markdown/bitburner.singularity.md +++ b/markdown/bitburner.singularity.md @@ -50,6 +50,8 @@ This API requires Source-File 4 to use. The RAM cost of all these functions is m | [getFactionFavor(faction)](./bitburner.singularity.getfactionfavor.md) | Get faction favor. | | [getFactionFavorGain(faction)](./bitburner.singularity.getfactionfavorgain.md) | Get faction favor gain. | | [getFactionRep(faction)](./bitburner.singularity.getfactionrep.md) | Get faction reputation. | +| [getLastAugReset()](./bitburner.singularity.getlastaugreset.md) | Get the last timestamp from when you installed augmentations. | +| [getLastNodeReset()](./bitburner.singularity.getlastnodereset.md) | Get the last timestamp from when you finished a bitnode. | | [getOwnedAugmentations(purchased)](./bitburner.singularity.getownedaugmentations.md) | Get a list of owned augmentation. | | [getOwnedSourceFiles()](./bitburner.singularity.getownedsourcefiles.md) | Get a list of acquired Source-Files. | | [getUpgradeHomeCoresCost()](./bitburner.singularity.getupgradehomecorescost.md) | Get the price of upgrading home cores. | diff --git a/src/Netscript/RamCostGenerator.ts b/src/Netscript/RamCostGenerator.ts index a0995cb7c..2c47c5f9f 100644 --- a/src/Netscript/RamCostGenerator.ts +++ b/src/Netscript/RamCostGenerator.ts @@ -204,6 +204,8 @@ const singularity = { b1tflum3: SF4Cost(16), destroyW0r1dD43m0n: SF4Cost(32), getCurrentWork: SF4Cost(0.5), + getLastAugReset: SF4Cost(0.5), + getLastNodeReset: SF4Cost(0.5), } as const; // Gang API diff --git a/src/NetscriptFunctions.ts b/src/NetscriptFunctions.ts index c82d383d8..f19b9f8dc 100644 --- a/src/NetscriptFunctions.ts +++ b/src/NetscriptFunctions.ts @@ -1782,8 +1782,6 @@ export const ns: InternalAPI = { location: Player.location, bitNodeN: Player.bitNodeN, totalPlaytime: Player.totalPlaytime, - playtimeSinceLastAug: Player.playtimeSinceLastAug, - playtimeSinceLastBitnode: Player.playtimeSinceLastBitnode, jobs: cloneDeep(Player.jobs), factions: Player.factions.slice(), entropy: Player.entropy, diff --git a/src/NetscriptFunctions/Formulas.ts b/src/NetscriptFunctions/Formulas.ts index 4b0261233..dae80bb81 100644 --- a/src/NetscriptFunctions/Formulas.ts +++ b/src/NetscriptFunctions/Formulas.ts @@ -97,8 +97,6 @@ export function NetscriptFormulas(): InternalAPI { location: "", bitNodeN: 0, totalPlaytime: 0, - playtimeSinceLastAug: 0, - playtimeSinceLastBitnode: 0, jobs: {}, factions: [], entropy: 0, diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index 2d7425c07..c8fd133ca 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -1253,6 +1253,14 @@ export function NetscriptSingularity(): InternalAPI { helpers.checkSingularityAccess(ctx); return canGetBonus(); }, + getLastAugReset: (ctx) => () => { + helpers.checkSingularityAccess(ctx); + return Player.lastAugReset; + }, + getLastNodeReset: (ctx) => () => { + helpers.checkSingularityAccess(ctx); + return Player.lastNodeReset; + }, }; Object.assign(singularityAPI, { getAugmentationCost: removedFunction( diff --git a/src/PersonObjects/Player/PlayerObject.ts b/src/PersonObjects/Player/PlayerObject.ts index e45e3e8ca..6385572b1 100644 --- a/src/PersonObjects/Player/PlayerObject.ts +++ b/src/PersonObjects/Player/PlayerObject.ts @@ -53,6 +53,8 @@ export class PlayerObject extends Person implements IPlayer { moneySourceB = new MoneySourceTracker(); playtimeSinceLastAug = 0; playtimeSinceLastBitnode = 0; + lastAugReset = -1; + lastNodeReset = -1; purchasedServers: string[] = []; scriptProdSinceLastAug = 0; sleeves: Sleeve[] = []; diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts b/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts index bc74d889c..06af668c8 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts @@ -111,6 +111,7 @@ export function prestigeAugmentation(this: PlayerObject): void { // Statistics Trackers this.playtimeSinceLastAug = 0; + this.lastAugReset = this.lastUpdate; this.scriptProdSinceLastAug = 0; this.moneySourceA.reset(); @@ -154,6 +155,7 @@ export function prestigeSourceFile(this: PlayerObject): void { this.moneySourceB.reset(); this.playtimeSinceLastBitnode = 0; + this.lastNodeReset = this.lastUpdate; this.augmentations = []; } diff --git a/src/SaveObject.tsx b/src/SaveObject.tsx index 4914e8535..a599161e4 100755 --- a/src/SaveObject.tsx +++ b/src/SaveObject.tsx @@ -657,8 +657,12 @@ function evaluateVersionCompatibility(ver: string | number): void { // Prior to v2.2.0, sleeve shock was 0 to 100 internally but displayed as 100 to 0. This unifies them as 100 to 0. for (const sleeve of Player.sleeves) sleeve.shock = 100 - sleeve.shock; } - if (anyPlayer.hashManager !== undefined) { - anyPlayer.hashManager.upgrades["Company Favor"] ??= 0; + if (ver < 31) { + if (anyPlayer.hashManager !== undefined) { + anyPlayer.hashManager.upgrades["Company Favor"] ??= 0; + } + anyPlayer.lastAugReset ??= anyPlayer.lastUpdate - anyPlayer.playtimeSinceLastAug; + anyPlayer.lastNodeReset ??= anyPlayer.lastUpdate - anyPlayer.playtimeSinceLastBitnode; } } diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index f1f6baf71..b340facbf 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -52,8 +52,6 @@ interface Player extends Person { factions: string[]; bitNodeN: number; totalPlaytime: number; - playtimeSinceLastAug: number; - playtimeSinceLastBitnode: number; location: string; } @@ -2363,6 +2361,24 @@ export interface Singularity { * @returns - An object representing the current work. Fields depend on the kind of work. */ getCurrentWork(): any | null; + + /** + * Get the last timestamp from when you installed augmentations. + * @remarks + * RAM cost: 0.5 GB * 16/4/1 + * + * @returns The timestamp in milliseconds from your last augmentation install. + */ + getLastAugReset(): number; + + /** + * Get the last timestamp from when you finished a bitnode. + * @remarks + * RAM cost: 0.5 GB * 16/4/1 + * + * @returns The timestamp in milliseconds from your last bitnode finish. + */ + getLastNodeReset(): number; } /**