Attempted to fix issue with calculateItemWorth()
failing on child items without a upd object
Clone children when returned to prevent modification + add missing upd object to child before calculating price
This commit is contained in:
parent
1b9a3c46f9
commit
5ffedfa91a
@ -8,6 +8,7 @@ import { BonusType } from "@spt/models/enums/BonusType";
|
|||||||
import { ILogger } from "@spt/models/spt/utils/ILogger";
|
import { ILogger } from "@spt/models/spt/utils/ILogger";
|
||||||
import { DatabaseService } from "@spt/services/DatabaseService";
|
import { DatabaseService } from "@spt/services/DatabaseService";
|
||||||
import { RagfairPriceService } from "@spt/services/RagfairPriceService";
|
import { RagfairPriceService } from "@spt/services/RagfairPriceService";
|
||||||
|
import { ICloner } from "@spt/utils/cloners/ICloner";
|
||||||
import { inject, injectable } from "tsyringe";
|
import { inject, injectable } from "tsyringe";
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
@ -20,6 +21,7 @@ export class RagfairTaxService {
|
|||||||
@inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService,
|
@inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService,
|
||||||
@inject("ItemHelper") protected itemHelper: ItemHelper,
|
@inject("ItemHelper") protected itemHelper: ItemHelper,
|
||||||
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
|
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
|
||||||
|
@inject("PrimaryCloner") protected cloner: ICloner,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void {
|
public storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void {
|
||||||
@ -120,15 +122,20 @@ export class RagfairTaxService {
|
|||||||
// Since we get a flat list of all child items, we only want to recurse from parent item
|
// Since we get a flat list of all child items, we only want to recurse from parent item
|
||||||
const itemChildren = this.itemHelper.findAndReturnChildrenAsItems(pmcData.Inventory.items, item._id);
|
const itemChildren = this.itemHelper.findAndReturnChildrenAsItems(pmcData.Inventory.items, item._id);
|
||||||
if (itemChildren.length > 1) {
|
if (itemChildren.length > 1) {
|
||||||
for (const child of itemChildren) {
|
const itemChildrenClone = this.cloner.clone(itemChildren); // Clone is expensive, only run if necessary
|
||||||
|
for (const child of itemChildrenClone) {
|
||||||
if (child._id === item._id) {
|
if (child._id === item._id) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!child.upd) {
|
||||||
|
child.upd = {};
|
||||||
|
}
|
||||||
|
|
||||||
worth += this.calculateItemWorth(
|
worth += this.calculateItemWorth(
|
||||||
child,
|
child,
|
||||||
this.itemHelper.getItem(child._tpl)[1],
|
this.itemHelper.getItem(child._tpl)[1],
|
||||||
child.upd?.StackObjectsCount ?? 1,
|
child.upd.StackObjectsCount ?? 1,
|
||||||
pmcData,
|
pmcData,
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user