0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 01:50:45 -05:00

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: SPT/Modules#169
Co-authored-by: Lacyway <lacyway@noreply.dev.sp-tarkov.com>
Co-committed-by: Lacyway <lacyway@noreply.dev.sp-tarkov.com>
This commit is contained in:
Lacyway 2024-09-20 10:02:44 +00:00 committed by chomp
parent e76ee6f2cc
commit 6d03395729

View File

@ -7,11 +7,14 @@ using HarmonyLib;
namespace SPT.SinglePlayer.Patches.ScavMode
{
/// <summary>
/// This patch return scav exfils if the player is playing as a scav by adding the player as eligible for the scav specific exfils
/// </summary>
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]
@ -22,17 +25,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<GameWorld>.Instance.MainPlayer).Position, profile.Id, profile.FenceInfo.AvailableExitsCount);