My gun was firing every frame instead of accounting for recoil, no matter how large I set the recoil value to be. I assumed it was broken. I spent about 30 min rearranging code trying to figure out why it wasn't working, when I remembered. The recoil value is exported, and in the gun scene I had the value changed, so it didn't matter what value I set in my script. The value was 0 in my scene, so it fired every frame.
I feel stupid, but this is a normal feeling for most coders, so I'm not too worried about it . Let that teach me to think more when I'm using exported variables.