From dd4bc93a97f2735c144b194f9fbe1633818e6f9f Mon Sep 17 00:00:00 2001 From: Lacyway Date: Fri, 1 Nov 2024 13:23:31 +0000 Subject: [PATCH] Fix FixSavageInventoryScreenPatch (!173) This fixes the logic of FixSavageInventoryScreenPatch. NOTE: The code below is untested and will most likely not work. It's what I theoretically believe is the right way to turn the `JObject` into a string for the server, however BSG has a `JsonWriter` in the client now that might have to be utilized? I will leave it like this until we have more info. ```c# RequestHandler.PutJson("/raid/profile/scavsave", GetProfileAtEndOfRaidPatch.ProfileDescriptor.ToUnparsedData([]).JObject.ToString()); ``` Co-authored-by: Lacyway <20912169+Lacyway@users.noreply.github.com> Reviewed-on: https://dev.sp-tarkov.com/SPT/Modules/pulls/173 Co-authored-by: Lacyway Co-committed-by: Lacyway --- .../ScavMode/FixSavageInventoryScreenPatch.cs | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/project/SPT.SinglePlayer/Patches/ScavMode/FixSavageInventoryScreenPatch.cs b/project/SPT.SinglePlayer/Patches/ScavMode/FixSavageInventoryScreenPatch.cs index 793f82e..fc2908f 100644 --- a/project/SPT.SinglePlayer/Patches/ScavMode/FixSavageInventoryScreenPatch.cs +++ b/project/SPT.SinglePlayer/Patches/ScavMode/FixSavageInventoryScreenPatch.cs @@ -15,7 +15,8 @@ namespace SPT.SinglePlayer.Patches.ScavMode /// public class GetProfileAtEndOfRaidPatch : ModulePatch { - public static string Profile { get; private set; } + public static GClass1962 ProfileDescriptor { get; private set; } + protected override MethodBase GetTargetMethod() { return AccessTools.Method(typeof(LocalGame), nameof(LocalGame.Stop)); @@ -24,8 +25,7 @@ namespace SPT.SinglePlayer.Patches.ScavMode [PatchPrefix] public static void PatchPrefix(LocalGame __instance) { - //var test = new GClass1962(__instance.Profile_0, GClass1971.Instance); - //Profile = test.ToUnparsedData([]); + ProfileDescriptor = new GClass1962(__instance.Profile_0, GClass1971.Instance); } } /// @@ -42,27 +42,24 @@ namespace SPT.SinglePlayer.Patches.ScavMode [PatchPrefix] public static void PatchPrefix(ref ISession ___iSession) { - var profile = GetProfileAtEndOfRaidPatch.Profile.ParseJsonTo(); - - if (profile.Side != EPlayerSide.Savage) + Profile profile = new(GetProfileAtEndOfRaidPatch.ProfileDescriptor); + + if (profile.Side != EPlayerSide.Savage) { return; } var session = (ProfileEndpointFactoryAbstractClass)___iSession; - session.AllProfiles = new Profile[] - { - session.AllProfiles.First(x => x.Side != EPlayerSide.Savage), + session.AllProfiles = + [ + session.AllProfiles.First(x => x.Side != EPlayerSide.Savage), profile - }; + ]; session.ProfileOfPet.LearnAll(); - - // make a request to the server, so it knows of the items we might transfer - RequestHandler.PutJson("/raid/profile/scavsave", new - { - profile = session.ProfileOfPet - } - .ToJson()); + + // make a request to the server, so it knows of the items we might transfer + RequestHandler.PutJson("/raid/profile/scavsave", + GetProfileAtEndOfRaidPatch.ProfileDescriptor.ToUnparsedData([]).JObject.ToString()); } } }