public static void DeApply() { //1 var carAIPathfindFailure = typeof(CarAI).GetMethod("PathfindFailure", BindingFlags.NonPublic | BindingFlags.Instance); var carAIPathfindFailurePostFix = typeof(CustomCarAI).GetMethod("CarAIPathfindFailurePostFix"); harmony.ConditionalUnPatch(carAIPathfindFailure, null, new HarmonyMethod(carAIPathfindFailurePostFix)); //2 var transferManagerAddOutgoingOffer = typeof(TransferManager).GetMethod("AddOutgoingOffer", BindingFlags.Public | BindingFlags.Instance); var transferManagerAddOutgoingOfferPrefix = typeof(CustomTransferManager).GetMethod("TransferManagerAddOutgoingOfferPrefix"); harmony.ConditionalUnPatch(transferManagerAddOutgoingOffer, new HarmonyMethod(transferManagerAddOutgoingOfferPrefix), null); //3 var helicopterDepotAISimulationStep = typeof(HelicopterDepotAI).GetMethod("SimulationStep", BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(ushort), typeof(Building).MakeByRefType(), typeof(Building.Frame).MakeByRefType() }, null); var helicopterDepotAISimulationStepPostFix = typeof(CustomHelicopterDepotAI).GetMethod("HelicopterDepotAISimulationStepPostFix"); harmony.ConditionalUnPatch(helicopterDepotAISimulationStep, null, new HarmonyMethod(helicopterDepotAISimulationStepPostFix)); DebugLog.LogToFileOnly("Harmony patches DeApplied"); }
public static void DeApply() { //1 var netManagerReleaseNodeImplementation = typeof(NetManager).GetMethod("ReleaseNodeImplementation", BindingFlags.Instance | BindingFlags.NonPublic, Type.DefaultBinder, new Type[2] { typeof(ushort), typeof(NetNode).MakeByRefType() }, null); var netManagerReleaseNodeImplementationPreFix = typeof(CustomNetManager).GetMethod("NetManagerReleaseNodeImplementationPreFix"); harmony.ConditionalUnPatch(netManagerReleaseNodeImplementation, new HarmonyMethod(netManagerReleaseNodeImplementationPreFix), null); DebugLog.LogToFileOnly("Harmony patches DeApplied"); }
public static void DeApply() { //1 var commonBuildingAIReleaseBuilding = typeof(CommonBuildingAI).GetMethod("ReleaseBuilding"); var commonBuildingAIReleaseBuildingPostFix = typeof(CustomCommonBuildingAI).GetMethod("CommonBuildingAIReleaseBuildingPostfix"); harmony.ConditionalUnPatch(commonBuildingAIReleaseBuilding, null, new HarmonyMethod(commonBuildingAIReleaseBuildingPostFix)); //2 var carAIPathfindFailure = typeof(CarAI).GetMethod("PathfindFailure", BindingFlags.NonPublic | BindingFlags.Instance); var carAIPathfindFailurePostFix = typeof(CustomCarAI).GetMethod("CarAIPathfindFailurePostFix"); harmony.ConditionalUnPatch(carAIPathfindFailure, null, new HarmonyMethod(carAIPathfindFailurePostFix)); //3 var playerBuildingAISimulationStep = typeof(PlayerBuildingAI).GetMethod("SimulationStep", BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(ushort), typeof(Building).MakeByRefType(), typeof(Building.Frame).MakeByRefType() }, null); var playerBuildingAISimulationStepPostFix = typeof(CustomPlayerBuildingAI).GetMethod("PlayerBuildingAISimulationStepPostFix"); harmony.ConditionalUnPatch(playerBuildingAISimulationStep, null, new HarmonyMethod(playerBuildingAISimulationStepPostFix)); //4 if (!Loader.isAdvancedJunctionRuleRunning) { var carAISimulationStep = typeof(CarAI).GetMethod("SimulationStep", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(ushort), typeof(Vehicle).MakeByRefType(), typeof(Vehicle.Frame).MakeByRefType(), typeof(ushort), typeof(Vehicle).MakeByRefType(), typeof(int) }, null); var carAISimulationStepPreFix = typeof(CustomCarAI).GetMethod("CarAISimulationStepPreFix"); harmony.ConditionalUnPatch(carAISimulationStep, new HarmonyMethod(carAISimulationStepPreFix), null); } //5 var vehicleManagerReleaseVehicleImplementation = typeof(VehicleManager).GetMethod("ReleaseVehicleImplementation", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(ushort), typeof(Vehicle).MakeByRefType() }, null); var vehicleManagerReleaseVehicleImplementationPreFix = typeof(CustomVehicleManager).GetMethod("VehicleManagerReleaseVehicleImplementationPreFix"); harmony.ConditionalUnPatch(vehicleManagerReleaseVehicleImplementation, new HarmonyMethod(vehicleManagerReleaseVehicleImplementationPreFix), null); //6 var vehicleAICalculateTargetSpeed = typeof(VehicleAI).GetMethod("CalculateTargetSpeed", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(ushort), typeof(Vehicle).MakeByRefType(), typeof(float), typeof(float) }, null); var vehicleAICalculateTargetSpeedPreFix = typeof(CustomVehicleAI).GetMethod("VehicleAICalculateTargetSpeedPreFix"); harmony.ConditionalUnPatch(vehicleAICalculateTargetSpeed, new HarmonyMethod(vehicleAICalculateTargetSpeedPreFix), null); DebugLog.LogToFileOnly("Harmony patches DeApplied"); }
public static void DeApply() { //1 var carAISimulationStep = typeof(CarAI).GetMethod("SimulationStep", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(ushort), typeof(Vehicle).MakeByRefType(), typeof(Vehicle.Frame).MakeByRefType(), typeof(ushort), typeof(Vehicle).MakeByRefType(), typeof(int) }, null); var carAISimulationStepPreFix = typeof(CustomCarAI).GetMethod("CarAISimulationStepPreFix"); harmony.ConditionalUnPatch(carAISimulationStep, new HarmonyMethod(carAISimulationStepPreFix), null); }