From 6d033957295a0e9301969ffe197bdee0c8f77a4d Mon Sep 17 00:00:00 2001 From: Lacyway Date: Fri, 20 Sep 2024 10:02:44 +0000 Subject: [PATCH] Fix scav exfils (!169) `InitAllExfiltrationPoints` will instantiate the list of `ScavExfiltrationPoints` in one line before `EligiblePoints` is ran, meaning the following always returned: ```cs if (__instance.ScavExfiltrationPoints.Length > 0) { Logger.LogError($"ScavExfiltrationPoints has content, Do original"); foreach (var scavExit in __instance.ScavExfiltrationPoints) { Logger.LogError($"{scavExit.name}, {scavExit.Id}, {scavExit.Description}"); } return true; // do original } ``` I'm not sure if the logic was different before 3.10, but removing this ensures that the patch runs as intended. Tested both PMC and Scav raids, all is fine for me. Please test on your end as well. Co-authored-by: Lacyway <20912169+Lacyway@users.noreply.github.com> Reviewed-on: https://dev.sp-tarkov.com/SPT/Modules/pulls/169 Co-authored-by: Lacyway Co-committed-by: Lacyway --- .../Patches/ScavMode/ScavExfilPatch.cs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/project/SPT.SinglePlayer/Patches/ScavMode/ScavExfilPatch.cs b/project/SPT.SinglePlayer/Patches/ScavMode/ScavExfilPatch.cs index 837aa63..f74b097 100644 --- a/project/SPT.SinglePlayer/Patches/ScavMode/ScavExfilPatch.cs +++ b/project/SPT.SinglePlayer/Patches/ScavMode/ScavExfilPatch.cs @@ -7,11 +7,14 @@ using HarmonyLib; namespace SPT.SinglePlayer.Patches.ScavMode { + /// + /// This patch return scav exfils if the player is playing as a scav by adding the player as eligible for the scav specific exfils + /// public class ScavExfilPatch : ModulePatch { protected override MethodBase GetTargetMethod() { - return AccessTools.Method(typeof(ExfiltrationControllerClass), nameof(ExfiltrationControllerClass.EligiblePoints), new[] { typeof(Profile) }); + return AccessTools.Method(typeof(ExfiltrationControllerClass), nameof(ExfiltrationControllerClass.EligiblePoints), [typeof(Profile)]); } [PatchPrefix] @@ -21,17 +24,6 @@ namespace SPT.SinglePlayer.Patches.ScavMode { return true; // Not a scav - don't do anything and run original method } - - if (__instance.ScavExfiltrationPoints.Length > 0) - { - Logger.LogError($"ScavExfiltrationPoints has content, Do original"); - foreach (var scavExit in __instance.ScavExfiltrationPoints) - { - Logger.LogError($"{scavExit.name}, {scavExit.Id}, {scavExit.Description}"); - } - - return true; // do original - } // Running this prepares all the data for getting scav exfil points __instance.ScavExfiltrationClaim(((IPlayer)Singleton.Instance.MainPlayer).Position, profile.Id, profile.FenceInfo.AvailableExitsCount);