mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-12 21:50:43 -05:00
Fixed price discrepancy between trader and flea price for trader items, resolves #968
This commit is contained in:
parent
b48c1153e1
commit
e5fb672579
@ -22,6 +22,7 @@ import {
|
|||||||
IDynamic,
|
IDynamic,
|
||||||
IRagfairConfig,
|
IRagfairConfig,
|
||||||
} from "@spt/models/spt/config/IRagfairConfig";
|
} from "@spt/models/spt/config/IRagfairConfig";
|
||||||
|
import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
|
||||||
import { ITplWithFleaPrice } from "@spt/models/spt/ragfair/ITplWithFleaPrice";
|
import { ITplWithFleaPrice } from "@spt/models/spt/ragfair/ITplWithFleaPrice";
|
||||||
import { ILogger } from "@spt/models/spt/utils/ILogger";
|
import { ILogger } from "@spt/models/spt/utils/ILogger";
|
||||||
import { ConfigServer } from "@spt/servers/ConfigServer";
|
import { ConfigServer } from "@spt/servers/ConfigServer";
|
||||||
@ -40,6 +41,7 @@ import { inject, injectable } from "tsyringe";
|
|||||||
@injectable()
|
@injectable()
|
||||||
export class RagfairOfferGenerator {
|
export class RagfairOfferGenerator {
|
||||||
protected ragfairConfig: IRagfairConfig;
|
protected ragfairConfig: IRagfairConfig;
|
||||||
|
protected traderConfig: ITraderConfig;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
protected allowedFleaPriceItemsForBarter: { tpl: string; price: number }[];
|
protected allowedFleaPriceItemsForBarter: { tpl: string; price: number }[];
|
||||||
|
|
||||||
@ -69,6 +71,7 @@ export class RagfairOfferGenerator {
|
|||||||
@inject("PrimaryCloner") protected cloner: ICloner,
|
@inject("PrimaryCloner") protected cloner: ICloner,
|
||||||
) {
|
) {
|
||||||
this.ragfairConfig = this.configServer.getConfig(ConfigTypes.RAGFAIR);
|
this.ragfairConfig = this.configServer.getConfig(ConfigTypes.RAGFAIR);
|
||||||
|
this.traderConfig = this.configServer.getConfig(ConfigTypes.TRADER);
|
||||||
this.botConfig = this.configServer.getConfig(ConfigTypes.BOT);
|
this.botConfig = this.configServer.getConfig(ConfigTypes.BOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -589,6 +592,16 @@ export class RagfairOfferGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const barterSchemeItems = assorts.barter_scheme[item._id][0];
|
const barterSchemeItems = assorts.barter_scheme[item._id][0];
|
||||||
|
|
||||||
|
// Adjust price by traderPriceMultipler config property
|
||||||
|
if (this.traderConfig.traderPriceMultipler > 0) {
|
||||||
|
if (barterSchemeItems.length === 1 && this.paymentHelper.isMoneyTpl(barterSchemeItems[0]._tpl)) {
|
||||||
|
barterSchemeItems[0].count = Math.ceil(
|
||||||
|
barterSchemeItems[0].count * this.traderConfig.traderPriceMultipler,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const loyalLevel = assorts.loyal_level_items[item._id];
|
const loyalLevel = assorts.loyal_level_items[item._id];
|
||||||
|
|
||||||
const offer = this.createAndAddFleaOffer(traderID, time, items, barterSchemeItems, loyalLevel, false);
|
const offer = this.createAndAddFleaOffer(traderID, time, items, barterSchemeItems, loyalLevel, false);
|
||||||
|
@ -122,11 +122,6 @@ export class TraderAssortHelper {
|
|||||||
this.removeItemsFromAssort(traderClone.assort, fullProfile.spt.blacklistedItemTpls);
|
this.removeItemsFromAssort(traderClone.assort, fullProfile.spt.blacklistedItemTpls);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Multiply price if multiplier is other than 1
|
|
||||||
if (this.traderConfig.traderPriceMultipler !== 1) {
|
|
||||||
this.multiplyItemPricesByConfigMultiplier(traderClone.assort);
|
|
||||||
}
|
|
||||||
|
|
||||||
return traderClone.assort;
|
return traderClone.assort;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,24 +213,6 @@ export class TraderAssortHelper {
|
|||||||
return trader.base.nextResupply <= time;
|
return trader.base.nextResupply <= time;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterate over all assorts barter_scheme values, find barters selling for money and multiply by multipler in config
|
|
||||||
* @param traderAssort Assorts to multiple price of
|
|
||||||
*/
|
|
||||||
protected multiplyItemPricesByConfigMultiplier(traderAssort: ITraderAssort): void {
|
|
||||||
if (!this.traderConfig.traderPriceMultipler || this.traderConfig.traderPriceMultipler <= 0) {
|
|
||||||
this.traderConfig.traderPriceMultipler = 0.01;
|
|
||||||
this.logger.warning(this.localisationService.getText("trader-price_multipler_is_zero_use_default"));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const assortId in traderAssort.barter_scheme) {
|
|
||||||
const schemeDetails = traderAssort.barter_scheme[assortId][0];
|
|
||||||
if (schemeDetails.length === 1 && this.paymentHelper.isMoneyTpl(schemeDetails[0]._tpl)) {
|
|
||||||
schemeDetails[0].count = Math.ceil(schemeDetails[0].count * this.traderConfig.traderPriceMultipler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an array of pristine trader items prior to any alteration by player (as they were on server start)
|
* Get an array of pristine trader items prior to any alteration by player (as they were on server start)
|
||||||
* @param traderId trader id
|
* @param traderId trader id
|
||||||
|
@ -5,10 +5,10 @@ import { ILootRequest } from "@spt/models/spt/services/ILootRequest";
|
|||||||
export interface ITraderConfig extends IBaseConfig {
|
export interface ITraderConfig extends IBaseConfig {
|
||||||
kind: "spt-trader";
|
kind: "spt-trader";
|
||||||
updateTime: IUpdateTime[];
|
updateTime: IUpdateTime[];
|
||||||
|
updateTimeDefault: number;
|
||||||
purchasesAreFoundInRaid: boolean;
|
purchasesAreFoundInRaid: boolean;
|
||||||
/** Should trader reset times be set based on server start time (false = bsg time - on the hour) */
|
/** Should trader reset times be set based on server start time (false = bsg time - on the hour) */
|
||||||
tradersResetFromServerStart: boolean;
|
tradersResetFromServerStart: boolean;
|
||||||
updateTimeDefault: number;
|
|
||||||
traderPriceMultipler: number;
|
traderPriceMultipler: number;
|
||||||
fence: IFenceConfig;
|
fence: IFenceConfig;
|
||||||
moddedTraders: IModdedTraders;
|
moddedTraders: IModdedTraders;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user