using System.Linq; using System.Reflection; using SPT.Reflection.Patching; using Comfort.Common; using EFT; using HarmonyLib; namespace SPT.SinglePlayer.Patches.RaidFix { /// /// Patch to remove the Labs Access Card from player inventory upon entering Labs /// public class LabsKeycardRemovalPatch : ModulePatch { private const string LabsAccessCardTemplateId = "5c94bbff86f7747ee735c08f"; protected override MethodBase GetTargetMethod() { return AccessTools.Method(typeof(GameWorld), nameof(GameWorld.OnGameStarted)); } [PatchPostfix] private static void PatchPostfix() { var gameWorld = Singleton.Instance; var player = gameWorld?.MainPlayer; if (gameWorld == null || player == null) { return; } if (gameWorld.MainPlayer.Location.ToLower() != "laboratory") { return; } var accessCardItem = player.Profile.Inventory.AllRealPlayerItems.FirstOrDefault(x => x.TemplateId == LabsAccessCardTemplateId); if (accessCardItem == null) { return; } var inventoryController = Traverse.Create(player).Field("_inventoryController").Value; InteractionsHandlerClass.Remove(accessCardItem, inventoryController, false, true); } } }