mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
Fixed issue with redeemProfileReward()
not correctly levelling up traders, causing player to only see level 1 trader items until a restart
This commit is contained in:
parent
ca737d2f62
commit
ef8307540b
@ -7,6 +7,7 @@ import { PaymentHelper } from "@spt/helpers/PaymentHelper";
|
||||
import { PresetHelper } from "@spt/helpers/PresetHelper";
|
||||
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
|
||||
import { QuestHelper } from "@spt/helpers/QuestHelper";
|
||||
import { TraderHelper } from "@spt/helpers/TraderHelper";
|
||||
import { IPmcData } from "@spt/models/eft/common/IPmcData";
|
||||
import { Item } from "@spt/models/eft/common/tables/IItem";
|
||||
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
|
||||
@ -63,6 +64,7 @@ export class InventoryController
|
||||
@inject("RagfairOfferService") protected ragfairOfferService: RagfairOfferService,
|
||||
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
|
||||
@inject("PaymentHelper") protected paymentHelper: PaymentHelper,
|
||||
@inject("TraderHelper") protected traderHelper: TraderHelper,
|
||||
@inject("LocalisationService") protected localisationService: LocalisationService,
|
||||
@inject("PlayerService") protected playerService: PlayerService,
|
||||
@inject("LootGenerator") protected lootGenerator: LootGenerator,
|
||||
@ -965,15 +967,18 @@ export class InventoryController
|
||||
{
|
||||
case "TraderSalesSum":
|
||||
pmcData.TradersInfo[mailEvent.entity].salesSum = mailEvent.value;
|
||||
this.traderHelper.lvlUp(mailEvent.entity, pmcData);
|
||||
this.logger.success(`Set trader ${mailEvent.entity}: Sales Sum to: ${mailEvent.value}`);
|
||||
break;
|
||||
case "TraderStanding":
|
||||
pmcData.TradersInfo[mailEvent.entity].standing = mailEvent.value;
|
||||
this.traderHelper.lvlUp(mailEvent.entity, pmcData);
|
||||
this.logger.success(`Set trader ${mailEvent.entity}: Standing to: ${mailEvent.value}`);
|
||||
break;
|
||||
case "ProfileLevel":
|
||||
pmcData.Info.Experience = mailEvent.value;
|
||||
pmcData.Info.Level = this.playerService.calculateLevel(pmcData);
|
||||
// Will calculate level below
|
||||
this.traderHelper.validateTraderStandingsAndPlayerLevelForProfile(sessionId);
|
||||
this.logger.success(`Set profile xp to: ${mailEvent.value}`);
|
||||
break;
|
||||
case "SkillPoints":
|
||||
|
@ -224,10 +224,25 @@ export class TraderHelper
|
||||
return newStanding < 0 ? 0 : newStanding;
|
||||
}
|
||||
|
||||
/**
|
||||
* iterate over a profiles traders and ensure they have the correct loyaltyLevel for the player
|
||||
* @param sessionId Profile to check
|
||||
*/
|
||||
public validateTraderStandingsAndPlayerLevelForProfile(sessionId: string): void
|
||||
{
|
||||
const profile = this.profileHelper.getPmcProfile(sessionId);
|
||||
const traders = Object.keys(this.databaseServer.getTables().traders);
|
||||
for (const trader of traders)
|
||||
{
|
||||
this.lvlUp(trader, profile);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate traders level based on exp amount and increments level if over threshold
|
||||
* @param traderID trader to check standing of
|
||||
* @param pmcData profile to update trader in
|
||||
* Also validates and updates player level if not correct based on XP value
|
||||
* @param traderID Trader to check standing of
|
||||
* @param pmcData Profile to update trader in
|
||||
*/
|
||||
public lvlUp(traderID: string, pmcData: IPmcData): void
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user