Generate ammo box Ragfair offers with cartridges (!198)

#### TL;DR
Previously, Ragfair offers involving ammo boxes weren't generated with cartridges inside of them. This copies a lot of the logic from `InventoryHelper.hydrateAmmoBoxWithAmmo()` to add ammo to offers when they are generated. Made to fix #312.

#### Testing
Purchased various ammo boxes from Flea:

![image](/attachments/340fb349-2589-4b1a-81fa-f8d63f6f1a36)

Purchased ammo boxes are listed as full:

![image](/attachments/f52057d3-efe0-40e7-b64e-8d257a818fa5)

Unloading them produces correct ammunition:

![image](/attachments/33c71f7b-d452-473e-9705-cbad1ecc3f7d)

Co-authored-by: Spoony <Spoony@example.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/198
Co-authored-by: Spoony <spoony@noreply.dev.sp-tarkov.com>
Co-committed-by: Spoony <spoony@noreply.dev.sp-tarkov.com>
This commit is contained in:
Spoony 2024-01-16 10:26:48 +00:00 committed by chomp
parent 2787b25c8d
commit e1a8f26507

View File

@ -119,6 +119,14 @@ export class RagfairOfferGenerator
offerRequirements.push(requirement); offerRequirements.push(requirement);
} }
const itemsClone = this.jsonUtil.clone(items);
// Add cartridges to offers for ammo boxes
if (this.itemHelper.isOfBaseclass(itemsClone[0]._tpl, BaseClasses.AMMO_BOX))
{
this.itemHelper.addCartridgesToAmmoBox(itemsClone, this.itemHelper.getItem(items[0]._tpl)[1]);
}
const itemCount = items.filter((x) => x.slotId === "hideout").length; const itemCount = items.filter((x) => x.slotId === "hideout").length;
const roublePrice = Math.round(this.convertOfferRequirementsIntoRoubles(offerRequirements)); const roublePrice = Math.round(this.convertOfferRequirementsIntoRoubles(offerRequirements));
@ -136,7 +144,7 @@ export class RagfairOfferGenerator
avatar: this.getAvatarUrl(isTrader, userID), avatar: this.getAvatarUrl(isTrader, userID),
}, },
root: items[0]._id, root: items[0]._id,
items: this.jsonUtil.clone(items), items: itemsClone,
requirements: offerRequirements, requirements: offerRequirements,
requirementsCost: roublePrice, requirementsCost: roublePrice,
itemsCost: Math.round(this.handbookHelper.getTemplatePrice(items[0]._tpl)), // Handbook price itemsCost: Math.round(this.handbookHelper.getTemplatePrice(items[0]._tpl)), // Handbook price