0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00

Simplified generateInventoryId()

This commit is contained in:
Dev 2024-06-08 16:16:36 +01:00
parent b645e6f51b
commit e39654be6a

View File

@ -233,7 +233,7 @@ export class BotGenerator
this.addIdsToBot(bot); this.addIdsToBot(bot);
// Generate new inventory ID // Generate new inventory ID
this.generateInventoryID(bot); this.generateInventoryId(bot);
// Set role back to originally requested now its been generated // Set role back to originally requested now its been generated
if (botGenerationDetails.eventRole) if (botGenerationDetails.eventRole)
@ -523,50 +523,42 @@ export class BotGenerator
bot.aid = this.hashUtil.generateAccountId(); bot.aid = this.hashUtil.generateAccountId();
} }
protected generateInventoryID(profile: IBotBase): void /**
* Update a profiles profile.Inventory.equipment value with a freshly generated one
* Update all inventory items that make use of this value too
* @param profile Profile to update
*/
protected generateInventoryId(profile: IBotBase): void
{ {
const defaultInventory = "55d7217a4bdc2d86028b456d"; const rootInventoryItemTpl = "55d7217a4bdc2d86028b456d";
const itemsByParentHash: Record<string, Item[]> = {}; const newInventoryItemId = this.hashUtil.generate();
const inventoryItemHash: Record<string, Item> = {};
// Generate inventoryItem list
let inventoryId = "";
for (const item of profile.Inventory.items) for (const item of profile.Inventory.items)
{ {
inventoryItemHash[item._id] = item; // Root item found, update its _id value to newly generated id
if (item._tpl === rootInventoryItemTpl)
if (item._tpl === defaultInventory)
{ {
inventoryId = item._id; item._id = newInventoryItemId;
continue; continue;
} }
if (!("parentId" in item)) // Optimisation - skip items without a parentId
// They are never linked to root inventory item + we already handled root item above
if (!item.parentId)
{ {
continue; continue;
} }
if (!(item.parentId in itemsByParentHash)) // Item is a child of root inventory item, update its parentId value to newly generated id
if (item.parentId === profile.Inventory.equipment)
{ {
itemsByParentHash[item.parentId] = []; item.parentId = newInventoryItemId;
}
itemsByParentHash[item.parentId].push(item);
}
// Update inventoryId
const newInventoryId = this.hashUtil.generate();
inventoryItemHash[inventoryId]._id = newInventoryId;
profile.Inventory.equipment = newInventoryId;
// Update inventoryItem id
if (inventoryId in itemsByParentHash)
{
for (const item of itemsByParentHash[inventoryId])
{
item.parentId = newInventoryId;
} }
} }
// Update inventory equipment id to new one we generated
profile.Inventory.equipment = newInventoryItemId;
} }
/** /**