Add scav profile support to InventoryController.swapItem (!341)

Resolves https://dev.sp-tarkov.com/SPT-AKI/Issues/issues/664

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/341
Co-authored-by: Tyfon <tyfon7@outlook.com>
Co-committed-by: Tyfon <tyfon7@outlook.com>
This commit is contained in:
Tyfon 2024-05-19 12:25:56 +00:00 committed by chomp
parent 5b5bf8bd7c
commit 66cac910c3

View File

@ -401,13 +401,20 @@ export class InventoryController
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
const itemOne = pmcData.Inventory.items.find((x) => x._id === request.item); // During post-raid scav transfer, the swap may be in the scav inventory
let playerData = pmcData;
if (request.fromOwner?.type === "Profile" && request.fromOwner.id !== playerData._id)
{
playerData = this.profileHelper.getScavProfile(sessionID);
}
const itemOne = playerData.Inventory.items.find((x) => x._id === request.item);
if (!itemOne) if (!itemOne)
{ {
this.logger.error(`Unable to find item: ${request.item} to swap positions with: ${request.item2}`); this.logger.error(`Unable to find item: ${request.item} to swap positions with: ${request.item2}`);
} }
const itemTwo = pmcData.Inventory.items.find((x) => x._id === request.item2); const itemTwo = playerData.Inventory.items.find((x) => x._id === request.item2);
if (!itemTwo) if (!itemTwo)
{ {
this.logger.error(`Unable to find item: ${request.item2} to swap positions with: ${request.item}`); this.logger.error(`Unable to find item: ${request.item2} to swap positions with: ${request.item}`);
@ -457,7 +464,7 @@ export class InventoryController
let playerData = pmcData; let playerData = pmcData;
// We may be folding data on scav profile, get that profile instead // We may be folding data on scav profile, get that profile instead
if (request.fromOwner && request.fromOwner.type === "Profile" && request.fromOwner.id !== playerData._id) if (request.fromOwner?.type === "Profile" && request.fromOwner.id !== playerData._id)
{ {
playerData = this.profileHelper.getScavProfile(sessionID); playerData = this.profileHelper.getScavProfile(sessionID);
} }
@ -495,7 +502,7 @@ export class InventoryController
let playerData = pmcData; let playerData = pmcData;
// Fix for toggling items while on they're in the Scav inventory // Fix for toggling items while on they're in the Scav inventory
if (body.fromOwner && body.fromOwner.type === "Profile" && body.fromOwner.id !== playerData._id) if (body.fromOwner?.type === "Profile" && body.fromOwner.id !== playerData._id)
{ {
playerData = this.profileHelper.getScavProfile(sessionID); playerData = this.profileHelper.getScavProfile(sessionID);
} }