mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
Add 40% chance armors with plates do not have them whem listed on flea - mimics live behaviour
This commit is contained in:
parent
9403ff796e
commit
d5217928c2
@ -265,6 +265,10 @@
|
|||||||
"min": -2,
|
"min": -2,
|
||||||
"max": 20
|
"max": 20
|
||||||
},
|
},
|
||||||
|
"armor": {
|
||||||
|
"removeRemovablePlateChance": 40,
|
||||||
|
"plateSlotIdToRemovePool": ["front_plate", "back_plate"]
|
||||||
|
},
|
||||||
"itemPriceMultiplier": {
|
"itemPriceMultiplier": {
|
||||||
"5737292724597765e5728562": 6,
|
"5737292724597765e5728562": 6,
|
||||||
"57372ac324597767001bc261": 5,
|
"57372ac324597767001bc261": 5,
|
||||||
|
@ -384,9 +384,7 @@ export class RagfairOfferGenerator
|
|||||||
delete clonedAssort[0].parentId;
|
delete clonedAssort[0].parentId;
|
||||||
delete clonedAssort[0].slotId;
|
delete clonedAssort[0].slotId;
|
||||||
|
|
||||||
assortSingleOfferProcesses.push(
|
assortSingleOfferProcesses.push(this.createSingleOfferForItem(clonedAssort, isPreset, itemDetails));
|
||||||
this.createSingleOfferForItem(clonedAssort, isPreset, itemDetails),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(assortSingleOfferProcesses);
|
await Promise.all(assortSingleOfferProcesses);
|
||||||
@ -465,8 +463,28 @@ export class RagfairOfferGenerator
|
|||||||
itemWithChildren[0]._tpl,
|
itemWithChildren[0]._tpl,
|
||||||
this.ragfairConfig.dynamic.pack.itemTypeWhitelist,
|
this.ragfairConfig.dynamic.pack.itemTypeWhitelist,
|
||||||
);
|
);
|
||||||
|
|
||||||
const randomUserId = this.hashUtil.generate();
|
const randomUserId = this.hashUtil.generate();
|
||||||
|
|
||||||
|
// Remove removable plates if % check passes
|
||||||
|
if (this.itemHelper.armorItemCanHoldMods(itemWithChildren[0]._tpl))
|
||||||
|
{
|
||||||
|
const armorConfig = this.ragfairConfig.dynamic.armor;
|
||||||
|
|
||||||
|
const shouldRemovePlates = this.randomUtil.getChance100(armorConfig.removeRemovablePlateChance);
|
||||||
|
if (shouldRemovePlates && this.itemHelper.armorItemHasRemovablePlateSlots(itemWithChildren[0]._tpl))
|
||||||
|
{
|
||||||
|
const offerItemPlatesToRemove = itemWithChildren.filter((item) =>
|
||||||
|
armorConfig.plateSlotIdToRemovePool.includes(item.slotId?.toLowerCase())
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const plateItem of offerItemPlatesToRemove)
|
||||||
|
{
|
||||||
|
itemWithChildren.splice(itemWithChildren.indexOf(plateItem), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let barterScheme: IBarterScheme[];
|
let barterScheme: IBarterScheme[];
|
||||||
if (isPackOffer)
|
if (isPackOffer)
|
||||||
{
|
{
|
||||||
|
@ -106,6 +106,19 @@ export class ItemHelper
|
|||||||
return this.isOfBaseclasses(itemTpl, [BaseClasses.HEADWEAR, BaseClasses.VEST, BaseClasses.ARMOR]);
|
return this.isOfBaseclasses(itemTpl, [BaseClasses.HEADWEAR, BaseClasses.VEST, BaseClasses.ARMOR]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the pased in tpl have ability to hold removable plate items
|
||||||
|
* @param itemTpl item tpl to check for plate support
|
||||||
|
* @returns True when armor can hold plates
|
||||||
|
*/
|
||||||
|
public armorItemHasRemovablePlateSlots(itemTpl: string): boolean
|
||||||
|
{
|
||||||
|
const itemTemplate = this.getItem(itemTpl);
|
||||||
|
const plateSlotIds = this.getRemovablePlateSlotIds();
|
||||||
|
|
||||||
|
return itemTemplate[1]._props.Slots.some((slot) => plateSlotIds.includes(slot._name.toLowerCase()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does the provided item tpl require soft inserts to become a valid armor item
|
* Does the provided item tpl require soft inserts to become a valid armor item
|
||||||
* @param itemTpl Item tpl to check
|
* @param itemTpl Item tpl to check
|
||||||
|
@ -78,6 +78,8 @@ export interface Dynamic
|
|||||||
nonStackableCount: MinMax;
|
nonStackableCount: MinMax;
|
||||||
/** Range of rating offers for items being listed */
|
/** Range of rating offers for items being listed */
|
||||||
rating: MinMax;
|
rating: MinMax;
|
||||||
|
/** Armor specific flea settings */
|
||||||
|
armor: IArmorSettings;
|
||||||
/** A multipler to apply to individual tpls price just prior to item quality adjustment */
|
/** A multipler to apply to individual tpls price just prior to item quality adjustment */
|
||||||
itemPriceMultiplier: Record<string, number>;
|
itemPriceMultiplier: Record<string, number>;
|
||||||
/** Percentages to sell offers in each currency */
|
/** Percentages to sell offers in each currency */
|
||||||
@ -180,3 +182,11 @@ export interface IUnreasonableModPrices
|
|||||||
/** The new multiplier for items found using above property, e.g. a value of 4 means set items price to 4x handbook price */
|
/** The new multiplier for items found using above property, e.g. a value of 4 means set items price to 4x handbook price */
|
||||||
newPriceHandbookMultiplier: number;
|
newPriceHandbookMultiplier: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IArmorSettings
|
||||||
|
{
|
||||||
|
/** % chance / 100 that armor plates will be removed from an offer before listing */
|
||||||
|
removeRemovablePlateChance: number;
|
||||||
|
/** What slots are to be removed when removeRemovablePlateChance is true */
|
||||||
|
plateSlotIdToRemovePool: string[];
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user