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 { PresetHelper } from "@spt/helpers/PresetHelper";
|
||||||
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
|
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
|
||||||
import { QuestHelper } from "@spt/helpers/QuestHelper";
|
import { QuestHelper } from "@spt/helpers/QuestHelper";
|
||||||
|
import { TraderHelper } from "@spt/helpers/TraderHelper";
|
||||||
import { IPmcData } from "@spt/models/eft/common/IPmcData";
|
import { IPmcData } from "@spt/models/eft/common/IPmcData";
|
||||||
import { Item } from "@spt/models/eft/common/tables/IItem";
|
import { Item } from "@spt/models/eft/common/tables/IItem";
|
||||||
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
|
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
|
||||||
@ -63,6 +64,7 @@ export class InventoryController
|
|||||||
@inject("RagfairOfferService") protected ragfairOfferService: RagfairOfferService,
|
@inject("RagfairOfferService") protected ragfairOfferService: RagfairOfferService,
|
||||||
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
|
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
|
||||||
@inject("PaymentHelper") protected paymentHelper: PaymentHelper,
|
@inject("PaymentHelper") protected paymentHelper: PaymentHelper,
|
||||||
|
@inject("TraderHelper") protected traderHelper: TraderHelper,
|
||||||
@inject("LocalisationService") protected localisationService: LocalisationService,
|
@inject("LocalisationService") protected localisationService: LocalisationService,
|
||||||
@inject("PlayerService") protected playerService: PlayerService,
|
@inject("PlayerService") protected playerService: PlayerService,
|
||||||
@inject("LootGenerator") protected lootGenerator: LootGenerator,
|
@inject("LootGenerator") protected lootGenerator: LootGenerator,
|
||||||
@ -965,15 +967,18 @@ export class InventoryController
|
|||||||
{
|
{
|
||||||
case "TraderSalesSum":
|
case "TraderSalesSum":
|
||||||
pmcData.TradersInfo[mailEvent.entity].salesSum = mailEvent.value;
|
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}`);
|
this.logger.success(`Set trader ${mailEvent.entity}: Sales Sum to: ${mailEvent.value}`);
|
||||||
break;
|
break;
|
||||||
case "TraderStanding":
|
case "TraderStanding":
|
||||||
pmcData.TradersInfo[mailEvent.entity].standing = mailEvent.value;
|
pmcData.TradersInfo[mailEvent.entity].standing = mailEvent.value;
|
||||||
|
this.traderHelper.lvlUp(mailEvent.entity, pmcData);
|
||||||
this.logger.success(`Set trader ${mailEvent.entity}: Standing to: ${mailEvent.value}`);
|
this.logger.success(`Set trader ${mailEvent.entity}: Standing to: ${mailEvent.value}`);
|
||||||
break;
|
break;
|
||||||
case "ProfileLevel":
|
case "ProfileLevel":
|
||||||
pmcData.Info.Experience = mailEvent.value;
|
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}`);
|
this.logger.success(`Set profile xp to: ${mailEvent.value}`);
|
||||||
break;
|
break;
|
||||||
case "SkillPoints":
|
case "SkillPoints":
|
||||||
|
@ -224,10 +224,25 @@ export class TraderHelper
|
|||||||
return newStanding < 0 ? 0 : newStanding;
|
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
|
* Calculate traders level based on exp amount and increments level if over threshold
|
||||||
* @param traderID trader to check standing of
|
* Also validates and updates player level if not correct based on XP value
|
||||||
* @param pmcData profile to update trader in
|
* @param traderID Trader to check standing of
|
||||||
|
* @param pmcData Profile to update trader in
|
||||||
*/
|
*/
|
||||||
public lvlUp(traderID: string, pmcData: IPmcData): void
|
public lvlUp(traderID: string, pmcData: IPmcData): void
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user