Add ability to control weapon/equipment current durability
Fixed non-armored rigs not showing Blacklist mk-18
This commit is contained in:
parent
9573290778
commit
973b74bd98
@ -109,14 +109,26 @@
|
||||
"5c99f98d86f7745c314214b3": 2,
|
||||
"5c164d2286f774194c5e69fa": 0
|
||||
},
|
||||
"presetMaxDurabilityPercentMinMax": {
|
||||
"min": 39,
|
||||
"max": 60
|
||||
"weaponDurabilityPercentMinMax": {
|
||||
"current": {
|
||||
"min": 1,
|
||||
"max": 90
|
||||
},
|
||||
"max": {
|
||||
"min": 89,
|
||||
"max": 100
|
||||
}
|
||||
},
|
||||
"chancePlateExistsInArmorPercent": 50,
|
||||
"armorMaxDurabilityPercentMinMax": {
|
||||
"min": 35,
|
||||
"max": 75
|
||||
"current": {
|
||||
"min": 1,
|
||||
"max": 100
|
||||
},
|
||||
"max": {
|
||||
"min": 80,
|
||||
"max": 100
|
||||
}
|
||||
},
|
||||
"itemStackSizeOverrideMinMax": {
|
||||
"59e690b686f7746c9f75e848": {
|
||||
@ -217,8 +229,8 @@
|
||||
"5448e54d4bdc2dcc718b4568",
|
||||
"5a341c4086f77401f2541505",
|
||||
"5422acb9af1c889c16000029",
|
||||
"5448e5284bdc2dcb718b4567",
|
||||
"64d0b40fbe2eed70e254e2d4"
|
||||
"64d0b40fbe2eed70e254e2d4",
|
||||
"5fc22d7c187fea44d52eda44"
|
||||
],
|
||||
"coopExtractGift": {
|
||||
"sendGift": true,
|
||||
|
@ -74,6 +74,12 @@ export class FenceBaseAssortGenerator
|
||||
}
|
||||
}
|
||||
|
||||
// Only allow rigs with no slots (carrier rigs)
|
||||
if (this.itemHelper.isOfBaseclass(rootItemDb._id, BaseClasses.VEST) && rootItemDb._props.Slots.length > 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Skip seasonal event items when not in seasonal event
|
||||
if (this.traderConfig.fence.blacklistSeasonalItems && blockedSeasonalItems.includes(rootItemDb._id))
|
||||
{
|
||||
|
@ -30,8 +30,8 @@ export interface FenceConfig
|
||||
equipmentPresetMinMax: MinMax;
|
||||
itemPriceMult: number;
|
||||
presetPriceMult: number;
|
||||
armorMaxDurabilityPercentMinMax: MinMax;
|
||||
presetMaxDurabilityPercentMinMax: MinMax;
|
||||
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
|
||||
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
|
||||
chancePlateExistsInArmorPercent: number;
|
||||
/** Key: item tpl */
|
||||
itemStackSizeOverrideMinMax: Record<string, MinMax>;
|
||||
@ -48,6 +48,12 @@ export interface FenceConfig
|
||||
btrDeliveryExpireHours: number;
|
||||
}
|
||||
|
||||
export interface IItemDurabilityCurrentMax
|
||||
{
|
||||
current: MinMax;
|
||||
max: MinMax;
|
||||
}
|
||||
|
||||
export interface CoopExtractReward extends LootRequest
|
||||
{
|
||||
sendGift: boolean;
|
||||
|
@ -12,7 +12,7 @@ import { ITraderAssort } from "@spt-aki/models/eft/common/tables/ITrader";
|
||||
import { BaseClasses } from "@spt-aki/models/enums/BaseClasses";
|
||||
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
|
||||
import { Traders } from "@spt-aki/models/enums/Traders";
|
||||
import { ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig";
|
||||
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt-aki/models/spt/config/ITraderConfig";
|
||||
import {
|
||||
IFenceAssortGenerationValues,
|
||||
IGenerationAssortValues,
|
||||
@ -998,14 +998,19 @@ export class FenceService
|
||||
// Randomise Weapon durability
|
||||
if (this.itemHelper.isOfBaseclass(itemDetails._id, BaseClasses.WEAPON))
|
||||
{
|
||||
const presetMaxDurabilityLimits = this.traderConfig.fence.presetMaxDurabilityPercentMinMax;
|
||||
const duraMin = presetMaxDurabilityLimits.min / 100 * itemDetails._props.MaxDurability;
|
||||
const duraMax = presetMaxDurabilityLimits.max / 100 * itemDetails._props.MaxDurability;
|
||||
const weaponDurabilityLimits = this.traderConfig.fence.weaponDurabilityPercentMinMax;
|
||||
const maxDuraMin = weaponDurabilityLimits.max.min / 100 * itemDetails._props.MaxDurability;
|
||||
const maxDuraMax = weaponDurabilityLimits.max.max / 100 * itemDetails._props.MaxDurability;
|
||||
const chosenMaxDurability = this.randomUtil.getInt(maxDuraMin, maxDuraMax);
|
||||
|
||||
const maxDurability = this.randomUtil.getInt(duraMin, duraMax);
|
||||
const durability = this.randomUtil.getInt(1, maxDurability);
|
||||
const currentDuraMin = weaponDurabilityLimits.current.min / 100 * itemDetails._props.MaxDurability;
|
||||
const currentDuraMax = weaponDurabilityLimits.current.max / 100 * itemDetails._props.MaxDurability;
|
||||
const currentDurability = Math.min(
|
||||
this.randomUtil.getInt(currentDuraMin, currentDuraMax),
|
||||
chosenMaxDurability,
|
||||
);
|
||||
|
||||
itemToAdjust.upd.Repairable = { Durability: durability, MaxDurability: maxDurability };
|
||||
itemToAdjust.upd.Repairable = { Durability: currentDurability, MaxDurability: chosenMaxDurability };
|
||||
|
||||
return;
|
||||
}
|
||||
@ -1043,21 +1048,26 @@ export class FenceService
|
||||
/**
|
||||
* Generate a randomised current and max durabiltiy value for an armor item
|
||||
* @param itemDetails Item to create values for
|
||||
* @param maxDurabilityMinMaxPercent Max durabiltiy percent min/max values
|
||||
* @param equipmentDurabilityLimits Max durabiltiy percent min/max values
|
||||
* @returns Durability + MaxDurability values
|
||||
*/
|
||||
protected getRandomisedArmorDurabilityValues(
|
||||
itemDetails: ITemplateItem,
|
||||
maxDurabilityMinMaxPercent: MinMax,
|
||||
equipmentDurabilityLimits: IItemDurabilityCurrentMax,
|
||||
): Repairable
|
||||
{
|
||||
const duraMin = maxDurabilityMinMaxPercent.min / 100 * itemDetails._props.MaxDurability;
|
||||
const duraMax = maxDurabilityMinMaxPercent.max / 100 * itemDetails._props.MaxDurability;
|
||||
const maxDuraMin = equipmentDurabilityLimits.max.min / 100 * itemDetails._props.MaxDurability;
|
||||
const maxDuraMax = equipmentDurabilityLimits.max.max / 100 * itemDetails._props.MaxDurability;
|
||||
const chosenMaxDurability = this.randomUtil.getInt(maxDuraMin, maxDuraMax);
|
||||
|
||||
const maxDurability = this.randomUtil.getInt(duraMin, duraMax);
|
||||
const durability = this.randomUtil.getInt(1, maxDurability);
|
||||
const currentDuraMin = equipmentDurabilityLimits.current.min / 100 * itemDetails._props.MaxDurability;
|
||||
const currentDuraMax = equipmentDurabilityLimits.current.max / 100 * itemDetails._props.MaxDurability;
|
||||
const chosenCurrentDurability = Math.min(
|
||||
this.randomUtil.getInt(currentDuraMin, currentDuraMax),
|
||||
chosenMaxDurability,
|
||||
);
|
||||
|
||||
return { Durability: durability, MaxDurability: maxDurability };
|
||||
return { Durability: chosenCurrentDurability, MaxDurability: chosenMaxDurability };
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user