using Aki.Reflection.Patching;
using Comfort.Common;
using EFT;
using System.Reflection;
using HarmonyLib;
namespace Aki.Custom.Patches
{
///
/// Fix a bsg bug that causes the game to soft-lock when you have a container opened when extracting
///
public class ExitWhileLootingPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(BaseLocalGame), nameof(BaseLocalGame.Stop));
}
// Look at BaseLocalGame and find a method named "Stop"
// once you find it, there should be a StartBlackScreenShow method with
// a callback method (on dnspy will be called @class.method_0)
// Go into that method. This will be part of the code:
// if (GClass2505.CheckCurrentScreen(EScreenType.Reconnect))
// {
// GClass2505.CloseAllScreensForced();
// }
// The code INSIDE the if needs to run
[PatchPrefix]
private static bool PatchPrefix(string profileId)
{
var player = Singleton.Instance.MainPlayer;
if (profileId == player?.Profile.Id)
{
GClass3107.Instance.CloseAllScreensForced();
}
return true;
}
}
}