I'd focus on the other aspects first and then when they are working correctly, rethink the recoil.
You want the recoil events to happen after the aim/destroy events so that it does not interfere with the user's aim. I would suggest using Tweens to ensure your values return to what you want them too. Unless you use lerp in a specific way the values will not return to zero. The main thing though is that you don't want those recoil events happening on every tick.
You could have a boolean instance variable called "recoil" and set it to true after the aim/destroy actions. Then use that state to trigger the tweens for your recoil. When the tween that returns the value to the original number then you can set the recoil boolean to false.