Fix being unable to buy items via equipment preset menu

This commit is contained in:
Dev 2024-01-25 14:40:28 +00:00
parent fd7050b0ac
commit 9b47c3b50e

View File

@ -528,8 +528,9 @@ export class RagfairOfferHelper
pmcProfile: IPmcData, pmcProfile: IPmcData,
): boolean ): boolean
{ {
const item = offer.items[0]; const offerRootItem = offer.items[0];
const money = offer.requirements[0]._tpl; /** Currency offer is sold for */
const moneyTypeTpl = offer.requirements[0]._tpl;
const isTraderOffer = offer.user.memberType === MemberCategory.TRADER; const isTraderOffer = offer.user.memberType === MemberCategory.TRADER;
const isDefaultUserOffer = offer.user.memberType === MemberCategory.DEFAULT; const isDefaultUserOffer = offer.user.memberType === MemberCategory.DEFAULT;
@ -542,7 +543,8 @@ export class RagfairOfferHelper
return false; return false;
} }
if (!!itemsToAdd && !itemsToAdd.includes(item._tpl)) // Offer root items tpl not in searched for array
if (!itemsToAdd?.includes(offerRootItem._tpl))
{ {
// skip items we shouldn't include // skip items we shouldn't include
return false; return false;
@ -575,32 +577,26 @@ export class RagfairOfferHelper
return false; return false;
} }
if (searchRequest.quantityFrom > 0 && searchRequest.quantityFrom >= item.upd.StackObjectsCount) if (searchRequest.quantityFrom > 0 && searchRequest.quantityFrom >= offerRootItem.upd.StackObjectsCount)
{ {
// too little items to offer // too little items to offer
return false; return false;
} }
if (searchRequest.quantityTo > 0 && searchRequest.quantityTo <= item.upd.StackObjectsCount) if (searchRequest.quantityTo > 0 && searchRequest.quantityTo <= offerRootItem.upd.StackObjectsCount)
{ {
// too many items to offer // too many items to offer
return false; return false;
} }
if (searchRequest.onlyFunctional && this.presetHelper.hasPreset(item._tpl) && offer.items.length === 1) if (searchRequest.onlyFunctional && this.presetHelper.hasPreset(offerRootItem._tpl) && offer.items.length === 1)
{ {
// don't include non-functional items // don't include non-functional items
return false; return false;
} }
if (searchRequest.buildCount && this.presetHelper.hasPreset(item._tpl) && offer.items.length > 1) if (this.isConditionItem(offerRootItem)
{ && !this.itemQualityInRange(offerRootItem, searchRequest.conditionFrom, searchRequest.conditionTo)
// don't include preset items
return false;
}
if (this.isConditionItem(item)
&& !this.itemQualityInRange(item, searchRequest.conditionFrom, searchRequest.conditionTo)
) )
{ {
return false; return false;
@ -608,17 +604,17 @@ export class RagfairOfferHelper
// commented out as required search "which is for checking offers that are barters" // commented out as required search "which is for checking offers that are barters"
// has info.removeBartering as true, this if statement removed barter items. // has info.removeBartering as true, this if statement removed barter items.
if (searchRequest.removeBartering && !this.paymentHelper.isMoneyTpl(money)) if (searchRequest.removeBartering && !this.paymentHelper.isMoneyTpl(moneyTypeTpl))
{ {
// don't include barter offers // don't include barter offers
return false; return false;
} }
if (searchRequest.currency > 0 && this.paymentHelper.isMoneyTpl(money)) if (searchRequest.currency > 0 && this.paymentHelper.isMoneyTpl(moneyTypeTpl))
{ {
const currencies = ["all", "RUB", "USD", "EUR"]; const currencies = ["all", "RUB", "USD", "EUR"];
if (this.ragfairHelper.getCurrencyTag(money) !== currencies[searchRequest.currency]) if (this.ragfairHelper.getCurrencyTag(moneyTypeTpl) !== currencies[searchRequest.currency])
{ {
// don't include item paid in wrong currency // don't include item paid in wrong currency
return false; return false;