From 7a1fce6f64a9215714e2b452aa8a983c6bc212c9 Mon Sep 17 00:00:00 2001 From: catloversg <152669316+catloversg@users.noreply.github.com> Date: Wed, 24 Apr 2024 07:14:22 +0700 Subject: [PATCH] CORPORATION: Fix wrong average price of material (#1227) --- src/Corporation/Actions.ts | 2 ++ src/Corporation/Material.ts | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Corporation/Actions.ts b/src/Corporation/Actions.ts index 6b2f9680a..2db19dd17 100644 --- a/src/Corporation/Actions.ts +++ b/src/Corporation/Actions.ts @@ -358,6 +358,8 @@ export function BulkPurchase( const cost = amt * material.marketPrice; if (corp.funds >= cost) { corp.loseFunds(cost, "materials"); + material.averagePrice = + (material.averagePrice * material.stored + material.marketPrice * amt) / (material.stored + amt); material.stored += amt; warehouse.sizeUsed = warehouse.sizeUsed + amt * matSize; } else { diff --git a/src/Corporation/Material.ts b/src/Corporation/Material.ts index 4d5136fcd..463615fd7 100644 --- a/src/Corporation/Material.ts +++ b/src/Corporation/Material.ts @@ -77,6 +77,7 @@ export class Material { this.competition = MaterialInfo[this.name].competitionBase; this.competitionRange = MaterialInfo[this.name].competitionRange; this.marketPrice = MaterialInfo[this.name].baseCost; + this.averagePrice = this.marketPrice; this.maxVolatility = MaterialInfo[this.name].maxVolatility; this.markup = MaterialInfo[this.name].baseMarkup; } @@ -135,7 +136,13 @@ export class Material { // Initializes a Material object from a JSON save state. static fromJSON(value: IReviverValue): Material { const material = Generic_fromJSON(Material, value.data); - if (isNaN(material.quality)) material.quality = 1; + if (isNaN(material.quality)) { + material.quality = 1; + } + // averagePrice has not been initialized properly, so if it is 0 (wrong initial value), we set it to marketPrice. + if (material.averagePrice === 0) { + material.averagePrice = material.marketPrice; + } return material; } }