mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-13 09:50:43 -05:00
51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
using Aki.Reflection.Patching;
|
|
using Aki.Reflection.Utils;
|
|
using EFT;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
|
|
namespace Aki.SinglePlayer.Patches.Healing
|
|
{
|
|
/// <summary>
|
|
/// We need to alter Class1049.smethod_0().
|
|
/// Set the passed in ERaidMode to online, this ensures the heal screen shows.
|
|
/// It cannot be changed in the calling method as doing so causes the post-raid exp display to remain at 0
|
|
/// </summary>
|
|
public class PostRaidHealScreenPatch : ModulePatch
|
|
{
|
|
protected override MethodBase GetTargetMethod()
|
|
{
|
|
// Class1049.smethod_0 as of 18969
|
|
//internal static Class1049 smethod_0(GInterface29 backend, string profileId, Profile savageProfile, LocationSettingsClass.GClass1097 location, ExitStatus exitStatus, TimeSpan exitTime, ERaidMode raidMode)
|
|
var desiredType = PatchConstants.EftTypes.Single(x => x.Name == "PostRaidHealthScreenClass");
|
|
var desiredMethod = desiredType.GetMethods(BindingFlags.Static | BindingFlags.NonPublic).Single(IsTargetMethod);
|
|
|
|
Logger.LogDebug($"{this.GetType().Name} Type: {desiredType?.Name}");
|
|
Logger.LogDebug($"{this.GetType().Name} Method: {desiredMethod?.Name}");
|
|
|
|
return desiredMethod;
|
|
}
|
|
|
|
private static bool IsTargetMethod(MethodInfo mi)
|
|
{
|
|
var parameters = mi.GetParameters();
|
|
return parameters.Length == 7
|
|
&& parameters[0].Name == "session"
|
|
&& parameters[1].Name == "profileId"
|
|
&& parameters[2].Name == "savageProfile"
|
|
&& parameters[3].Name == "location"
|
|
&& parameters[4].Name == "exitStatus"
|
|
&& parameters[5].Name == "exitTime"
|
|
&& parameters[6].Name == "raidMode";
|
|
}
|
|
|
|
[PatchPrefix]
|
|
private static bool PatchPrefix(TarkovApplication __instance, ref ERaidMode raidMode)
|
|
{
|
|
raidMode = ERaidMode.Online;
|
|
|
|
return true; // Perform original method
|
|
}
|
|
}
|
|
}
|