示例#1
0
        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");
        }
示例#2
0
        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");
        }
示例#3
0
        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");
        }
示例#4
0
        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);
        }