diff --git a/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs index 332d2233..550be953 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs @@ -28,7 +28,6 @@ public class PrestigeHelper( var indexOfPrestigeObtained = Math.Clamp((prestige.PrestigeLevel ?? 1) - 1, 0, prestigeLevels.Count - 1); // Levels are 1 to 4, Index is 0 to 3 // Skill copy - var skillProgressCopyAmount = (float)(1 - prestigeLevels[indexOfPrestigeObtained].TransferConfigs.SkillConfig.TransferMultiplier); var masteringProgressCopyAmount = (float)( 1 - prestigeLevels[indexOfPrestigeObtained].TransferConfigs.MasteringConfig.TransferMultiplier @@ -90,6 +89,9 @@ public class PrestigeHelper( AddPrestigeRewardsToProfile(sessionId!.Value, newProfile, prestigeRewards); + // Copy profile stats + CopyStats(newProfile, oldProfile); + // Flag profile as having achieved this prestige level if (newProfile.CharacterData?.PmcData?.Prestige?.TryAdd(currentPrestigeData!.Id, timeUtil.GetTimeStamp()) is false) { @@ -126,6 +128,36 @@ public class PrestigeHelper( newProfile.CharacterData!.PmcData!.Info!.PrestigeLevel = prestige.PrestigeLevel; } + /// + /// Copy over profile stats from old profile to new + /// Remove some stats once copied over + /// + /// Profile to add stats to + /// Profile to copy stats from + protected void CopyStats(SptProfile newProfile, SptProfile oldProfile) + { + var newPmcStats = newProfile.CharacterData.PmcData.Stats; + var oldPmcStats = oldProfile.CharacterData.PmcData.Stats; + + newPmcStats.Eft = oldPmcStats.Eft; + + // Reset some PMC stats that should not be copied over + newPmcStats.Eft.CarriedQuestItems = []; + newPmcStats.Eft.FoundInRaidItems = []; + newPmcStats.Eft.LastSessionDate = 0; + + // TODO: find evidence scav stats are copied over in live + //var newScavStats = newProfile.CharacterData.ScavData.Stats; + //var oldScavStats = oldProfile.CharacterData.ScavData.Stats; + + //newPmcStats.Eft = oldScavStats.Eft; + + //// Reset some Scav stats that should not be copied over + //newScavStats.Eft.CarriedQuestItems = []; + //newScavStats.Eft.FoundInRaidItems = []; + //newScavStats.Eft.LastSessionDate = 0; + } + private void AddPrestigeRewardsToProfile(MongoId sessionId, SptProfile newProfile, IEnumerable rewards) { var itemsToSend = new List();