static bool simulate_patch(uint simulation, bool inputSteady, UseableVehicleBattery __instance, ref bool ___isUsing, ref bool ___isReplacing, ref float ___startedUse, ref float ___useTime, ref InteractableVehicle ___vehicle) { bool isReplaceable = Time.realtimeSinceStartup - ___startedUse > ___useTime * 0.75f; bool isUseable = Time.realtimeSinceStartup - ___startedUse > ___useTime; if (___isReplacing && isReplaceable) { ___isReplacing = false; if (___vehicle != null && ___vehicle.isBatteryReplaceable) { if (Plugin.TryGetCustomDataFor <ushort>(___vehicle.asset.GUID, FieldName, out ushort requiredBatteryID)) { if (requiredBatteryID != __instance.player.equipment.itemID) { return(false); } } ___vehicle.replaceBattery(__instance.player, __instance.player.equipment.quality); ___vehicle = null; } if (Provider.isServer) { __instance.player.equipment.useStepA(); } } if (___isUsing && isUseable) { __instance.player.equipment.isBusy = false; ___isUsing = false; if (Provider.isServer) { __instance.player.equipment.useStepB(); } } return(false); }